3

アプリケーションが消費するサイクル数 (プロセッサ命令サイクル) からプロセッサ上のアプリケーションのスループットを判断することはできますか? はいの場合、どのように計算しますか?

4

4 に答える 4

4

プロセスが完全に CPU バウンドの場合、プロセッサ速度をサイクル数で割り、スループットを取得します。

ただし、実際には、完全に CPU バウンドのプロセスはほとんどありません。その場合、他の要因 (ディスク速度、メモリ速度、シリアライゼーションなど) を考慮する必要があります。

于 2010-06-17T18:09:40.367 に答える
2

単純:

#include <time.h>
clock_t c;
c = clock(); // c holds clock ticks value
c = c / CLOCKS_PER_SEC; // real time, if you need it

得られる値は概算であることに注意してください。詳細については、clock()man ページを参照してください。

于 2010-06-17T18:08:31.633 に答える
0

一部の CPU には内部パフォーマンス レジスタがあり、命令サイクル (実行ユニットごとの場合もあります)、キャッシュ ミス、キャッシュ/メモリの読み取り/書き込みの数など、あらゆる種類の興味深い統計を収集できます。これらにアクセスできます。ただし、使用している CPU と OS によっては、GUI を介してすべての詳細を管理する既存のツールが存在する可能性があります。多くの場合、優れたプロファイリング ツールはパフォーマンス レジスタをサポートしており、それらを使用して統計を収集できます。

于 2010-06-17T18:35:11.060 に答える
0

TI/Luminary Micro のCortex-M3を使用する場合は、 TI/Luminary Micro が提供するdriverlibを利用できます。SysTick 関数を使用すると、SysTickPeriod を 1 プロセッサ サイクルに設定できます。したがって、割り込み間に 1 プロセッサ クロックがあります。割り込みの数を数えることで、関数または関数ブロックにかかる時間を「十分に近い推定値」にする必要があります。

于 2010-07-13T08:47:18.930 に答える