問題タブ [cpu-cycles]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Javaコントロールアニメーション-それらをスムーズかつ効率的にする方法
私はJavaでいくつかのカスタムコントロールをプログラミングし、トランジション/フェード/ムーブメントにアニメーションを使用しています。
私がこれを行っている方法は、新しいスレッドを開始し、変数を調整し、paint()
メソッドを使用して調整することです。
例:
さて、私の質問は、たとえば、フェードインを実装していたとしましょう。私が行うことは、アルファ変数をインクリメントして、たとえば(擬似コードで)byte x //between 0-255
長方形をペイントすることです。alphaLevel += x
私が知りたいのは、アニメーションが途切れ途切れに見えないように、スリープを設定する必要がある最低値と最高値です。ターゲットデバイスのリフレッシュレートと関係がありますか、それとも人間の目と関係がありますか?ステップでもう一度同じ質問。コピーできる良い数字を教えてくれるウェブサイトはありますか?
私が尋ねる理由は、バッテリー駆動のデバイスで実行されるため、CPU時間が長くなる=バッテリーが少なくなるため、効率を最大化するためです。何に設定しますか?
ありがとう。
c - このコードは、経過したCPUサイクル数をどのように計算しますか?
このSOスレッドから取得したこのコードは、行//1
との間でコードを実行して経過したCPUサイクル数を計算します//2
。
関数はどのようにrdtsc()
機能しますか?
cpu-architecture - コンピュータ組織
「クロック サイクル」とは何か、詳しく説明していただけますか。
c++ - c++ の実用的な計算の複雑さSQRT()
間のCPUサイクル(または、本質的に「速度」)の違いは何ですか
と
編集:操作が同等ではないことはわかっていx /= y
ます。ベンチマークとして恣意的に提案しているだけですx = sqrt(y)
c - (n-乗算)vs(n /2-乗算+2加算)どちらが良いですか?
n回の乗算(n回の反復による単一の乗算)を持つCプログラムがあり、(1回の乗算+ 2回の加算)のn/2回の反復を持つ別のロジックを見つけました。私は両方がO(n)であるという複雑さについて知っています。しかし、CPUサイクルの観点から。どちらが速いですか?
emulation - CPUをエミュレートするときのサイクルカウント精度に関する質問
私は、Javaでの趣味のプロジェクトとして、今後数か月にわたってSega Master Systemエミュレーターを作成することを計画しています(これには最適な言語ではないことはわかっていますが、作業が非常に快適で、 WindowsとLinuxの両方で、クロスプラットフォームアプリケーションが素晴らしいと思いました)。私の質問はサイクルカウントに関するものです。
別のZ80エミュレーター、および他のエミュレーターのソースコードを調べましたが、特に実行ループに興味をそそられます。呼び出されると、intが引数として渡されます(例として1000としましょう)。これで、各オペコードの実行にかかるサイクル数が異なり、これらが実行されると、サイクル数が全体の数値から減少することがわかります。残りのサイクル数が0未満になると、実行ループは終了します。
私の質問は、これらのエミュレーターの多くは、実行される最後の命令がサイクル数を負の値に押し上げる可能性があるという事実を考慮していないということです-つまり、実行ループ間で、たとえば1002サイクルになる可能性があります1000の代わりに実行されます。これは重要ですか?一部のエミュレーターは、次の実行ループで補正することによってこれを説明しますが、そうでないエミュレーターもあります-どちらのアプローチが最適ですか?私は自分自身を横切るのが特に得意ではないので、私の質問を説明させてください。
この特定のループの例が終了すると、numOfCyclesは-2になります。これはほんのわずかな不正確さですが、人々の経験では全体的に重要ですか?これについて誰かの洞察をいただければ幸いです。これが適切だと思われるので、フレームごとにCPUに割り込む予定なので、1000サイクルは低いと思いますが、これは単なる例です。
どうもありがとう、フィル
performance - これらのCPU操作は同じですか?
次の 2 つの CPU 操作を検討してください。
合計 = 1 + 1 + 1 + 1 + 1 + 1+ 1+......n 回
合計 = 1 * n
ここで、これら 2 つの操作が複雑さと CPU 時間の点で異なることを知りたいと思います。また、これらをアトミック操作と見なすことはできますか?
performance - RDTSCがシリアル化命令ではないのはなぜですか?
RDTSC命令のIntelマニュアルでは、 RDTSCが実際に実行されると、アウトオブオーダー実行が変更される可能性があると警告されています。CPUIDは命令ストリームをシリアル化するため、その前にCPUID命令を挿入することをお勧めします(CPUIDがアウトオブオーダーで実行されることはありません)。私の質問は単純です:彼らが命令をシリアル化する能力を持っていたのなら、なぜ彼らはRDTSCをシリアル化させなかったのですか?それの全体的なポイントは、サイクルの正確なタイミングを取得することであるように見えます。シリアル化命令を前に付けたくない状況はありますか?
新しいIntelCPUには、シリアル化されている個別のRDTSCP命令があります。Intelは、RDTSCの動作を変更するのではなく、別の命令を導入することを選択しました。これは、潜在的に故障したタイミングが必要な状況が必要であることを私に示唆しています。それは何ですか?
c - ループ展開とパイプラインと CPE への影響 (解決策はありますが、理解していません)
その下には、模擬試験の問題があります。この表には、実際にはすべてのソリューションが記入されています。ただし、ソリューションが何であるかについて明確にする必要があります。(水平線の下の質問を読んでください)。
たとえば、A2 と A3 のソリューション行を理解したいと思います。
ご覧のとおり、A2 では次のような状況が発生しています。
- x * y
- xy * r
- xyr * z
それでは、それがパイプラインでどのようになるかを見てみましょう。
したがって、依存関係の競合がないため、xyr * z と x2 * y2 を重ねることができます。しかし、それは3サイクルを取り除くだけですよね?
したがって、(12 - 3) / 3 = 9 / 3 = 1 エレメントあたり 3 サイクル (3 エレメント) となります。では、どうやって A2 の 8/3 CPE を得ているのでしょうか?
この概念を理解する助けがあれば大歓迎です! テストは来週までないので、急ぐ必要はありません。他に必要な情報があれば教えてください!
(以下は、完全に解答が記入された表とともに、完全なテスト問題のテキストです)
n 個の整数の配列の積を計算する次の関数を考えてみましょう。
ループを 3 倍に展開しました。
製品の計算というラベルの付いた行では、次のように、括弧を使用して計算の 5 つの異なる関連付けを作成できます。
関数のパフォーマンスを要素あたりのサイクル数 (CPE) で表します。この本で説明されているように、この測定では、長さ n の配列の実行時間がクロック サイクルで測定され、Cn + K の形式の関数であると想定しています。ここで、C は CPE です。
Intel Pentium III で関数の 5 つのバージョンを測定しました。このマシンでの整数乗算演算のレイテンシは 4 サイクルで、発行時間は 1 サイクルであることを思い出してください。
次の表は、CPE のいくつかの値と、欠落している他の値を示しています。測定された CPE 値は、実際に観察された値です。「理論上の CPE」とは、整数乗数の遅延と発行時間が唯一の制限要因である場合に達成されるパフォーマンスを意味します。
不足しているエントリを入力します。測定された CPE の欠損値については、同じ計算動作を持つ他のバージョンの値を使用できます。理論上の CPE の値については、乗数のレイテンシと発行時間のみを考慮して反復に必要なサイクル数を決定し、3 で割ることができます。