問題タブ [cpu-speed]
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.
c# - Windows 64ビットでCPU速度を検出する方法は?
ここから次のコードを見つけました"http://www.boyet.com/Articles/CodeFromInternet.html "
。CPUの速度をGHzで返しますが、32ビットWindowsでのみ機能します。
64ビット管理クラスを検索しましたが、成功しませんでした。
64ビットWindowsでCPU速度を取得する他の方法はありますか?
performance - 最新の CPU は正確にどのくらい「高速」ですか?
組み込みシステムと初期の 8/16 ビット PC (6502、68K、8086) をプログラミングしていたとき、各命令の実行にかかる正確な時間 (ナノ秒またはマイクロ秒) をかなりよく把握していました。ファミリによっては、1 (または 4) サイクルが 1 回の「メモリ フェッチ」に相当し、キャッシュを気にする必要がなければ、関係するメモリ アクセスの数に基づいてタイミングを推測できます。
しかし、最近の CPU では混乱します。それらがはるかに高速であることは知っていますが、見出しのギガヘルツ速度は、各命令に必要なクロックのサイクル数を知らなければ役に立たないことも知っています.
したがって、2GHz Core 2 Duo (としましょう) で、2 つのサンプル命令のタイミングを誰かが提供できますか。最良のケースと最悪のケース (キャッシュに何もない/すべてがキャッシュにあると仮定) が役に立ちます。
命令 #1: 1 つの 32 ビット レジスタを 2 番目に追加します。
命令 #2: 32 ビット値をレジスタからメモリに移動します。
編集:私がこれを尋ねる理由は、単純なコードを見て、最も近い桁までの時間を大まかに測定できるようにする「経験則」を開発しようとすることです。
編集#2:興味深い点を含む多くの回答がありますが、(まだ)誰も時間で測定された数字を書き留めていません. 質問に「複雑さ」があることは承知していますが、おいでください: NYC のピアノ調律師の数を見積もることができれば、コードの実行時間を見積もることができるはずです...
次の (ダム) コードを使用します。
実行にかかる時間をどのように見積もればよいでしょうか... 1 フェムト秒ですか? 1ギガ年?
low-level - レジスタの増分を使用してクロックレートを決定できますか?
(ループ内の)レジスタの増分を使用して、(実効)クロックレートを決定できますか?当然のことながら可能だと思いましたが、CPUはこの種の計算を役に立たなくするスーパースカラー技術を組み込む可能性があるとコメントされました。また、CPUのレジスタのインクリメントは1クロックサイクル未満で実行できると言われました。
それは本当ですか?
performance - CPU 使用率
Q1. CPU を消費せずに優れたパフォーマンスを達成するコードを作成するためのベスト プラクティスは何ですか? 質問は非常に一般的です。ここで私が求めているのは、さまざまな環境で使用されるさまざまなプラクティスをリストアップすることですか? プロセスモニター/タスクマネージャー以外のデバッグのヒント
編集:私はIOバウンドプロセスについて話しているのではありません。私はCPUバウンドプロセスについて話しています。しかし、ここでは、プロセスが CPU を占有し続けることは望ましくありません。4 コアのマシンがあり、プロセス内で 4 つの単純なループを実行すると、アプリケーション/プロセスが実行されるまで CPU 消費が最大 400% まで上昇します。
私はここで、誰もが何度か直面したであろうトピックについての経験を求めています. たとえば、アプリケーションが存在しないファイルを検索するために継続的にループしていたため、Windows で CPU を占有していたアプリケーションをデバッグしました。
2 つの異なる CPU バウンド アプリケーションがスムーズに実行される (良い応答が得られる) ようにプログラムを作成するにはどうすればよいですか?
更新: 提案:
適切でクリーンなコードを記述し、アプリケーションをプロファイリングしてから最適化します。(ヒントをありがとうテッド)
コードをプロファイリングして修正するよりも、コードを書き直し/再設計/リファクタリングする方が簡単です。
プロファイラーを使用してアプリケーションをデバッグする
待機時間が長いスレッドにはスピンロックを使用しないでください
アルゴリズムの選択
これらの提案は、初心者が概念を理解するのに大いに役立ちます。
optimization - コードの最適化は不要になりますか?
ムーアの法則が当てはまり、CPU/GPU がますます高速になった場合、ソフトウェア (およびそれに関連してソフトウェア開発者) は、コードを最適化する必要があるほど境界を押し広げますか? それとも、あなたのコード (など) には単純な階乗解で十分でしょうか?
python - Python (Bash?) を使用して OS レベルのシステム情報 (CPU 速度) を取得する
Pythonを使用してこの質問を繰り返したいと思います。理由は、クラスター内の 10 個のノードにアクセスでき、各ノードが同一ではないためです。それらのパフォーマンスはさまざまであり、使用可能なメモリと CPU 速度/コアに基づいて、リモートで使用するのに最適なコンピューターを見つけたいと考えています。
編集:コマンドラインインターフェースだけでも便利です。迅速で汚い解決策はありますか?
multithreading - ビジネス ハードウェアのアップグレードの正当性について、CPU 速度の改善の可能性を比較する
私は c# コンソール アプリを持っています。モンテカルロ シミュレーションは完全に CPU バウンドで、実行時間は利用可能な専用スレッド/コアの数に反比例します (コア/スレッド間の比率は 1:1 を維持しています)。
現在、毎日実行されます:
AMD Opteron 275 @ 2.21 GHz (4 コア)
アプリは 3 つのスレッドを使用するマルチスレッドで、4 番目のスレッドは別のプロセス コントローラー アプリ用です。
実行には1 日あたり 15 時間かかります。
次の CPU で構成されたシステムで同じ作業を実行するのにかかる時間を、可能な限り見積もる必要があります。
ケースを比較して、利用可能なスレッドを使用して再コーディングします。安価な x5540 よりも 2 x x5570 CPU を搭載したサーバーが必要であることを正当化したいと思います (単一のマザーボードで 2 つの CPU をサポートします)。これにより、オペレーティング システムで 8 コア、16 スレッド (これが Nehalem チップの仕組みだと私は信じています) を利用できるようになります。私のアプリでは、モンテカルロ シミュレーションまで 15 スレッドです。
これを行う方法はありますか?シングル スレッド ベンチマークに関連する 3 つの CPU すべてのベンチマーク データを参照できる Web サイトはありますか? 次に、ケースとスレッド数を推定できます。必要に応じてベンチマークをインストールして実行するために、現在のシステムにアクセスできます。
今後 3 か月間でこのアプリのワークロードが約 20 倍に増加し、24 時間時計で完了する必要があるというビジネス上の指示もあることに注意してください。
どんな助けでも大歓迎です。
これもここに投稿しました:http://www.passmark.com/forum/showthread.php?t=2308うまくいけば、ベンチマークをよりよく説明できるので、コアごとのスコアを効果的に取得できます。
android - Androidゲームループ、速度とフレームレートを制御する方法
私はAndroid用のゲームを作成し、Dev Phone 1でテストしました。これは完全に機能し、速度はちょうどいいです。ただし、電話のCPUは高速化されていると確信しています。彼らはすでに開発者の電話よりも速いかもしれません。
デバイスや実行速度に関係なく、ゲームがまったく同じ速度で実行されるようにするにはどうすればよいですか?何かテクニックを知っていますか?ループの先頭で毎回何らかのタイマーをチェックする必要がありますか?
フレームレートについて言及していると思いますが、ほとんどの場合、ゲームがメインのゲームループを通過する速度です。
どんな理論や経験も素晴らしいでしょう!ありがとうございました。
c++ - C++ (Linux) で CPU クロック速度を取得するにはどうすればよいですか?
C++ で CPU クロック速度を取得するにはどうすればよいですか?
違いがある場合は、Ubuntu 9.10 を実行しています。
.net - クロスコア コンテキスト スイッチの数を最小限に抑える
私は最近、(Visual Studio Performance Wizard を使用して) アプリケーション プロファイリングをいろいろ試していました。同時実行インジケーターを操作しているときに、アプリケーションが複数のスレッド (バックグラウンドとフォアグラウンドの両方) で実行されている場合、クロスコア コンテキスト スイッチ レートが非常に高いという事実に気付きました。
一般に、多数のクロスコア コンテキスト スイッチがアプリケーションのパフォーマンスに悪影響を与える可能性があることを知っているため、最小限に抑えたいと考えています。
同時に実行されるスレッドの数を最小限に抑える以外に、.NET アプリケーションでこれを行うにはどのような方法がありますか?