質問

私はシンプルを書きました ロードテストツール Javaモジュールのパフォーマンスをテストするため。私が直面した問題の1つは、スループット測定のアルゴリズムです。テストは複数のスレッドで実行されます(クライアントの構成テストを繰り返す必要がある)、実行時間が記録されます。したがって、テストが終了すると、次の履歴があります。

4 test executions
2 threads
36ms overall time

- idle
* test execution
       5ms    9ms     4ms      13ms
T1  |-*****-*********-****-*************-|
      3ms  6ms     7ms      11ms
T2  |-***-******-*******-***********-----|
    <-----------------36ms--------------->

今のところ、次の方法でスループット(1秒あたり)を計算します。 1000 / overallTime * threadCount.

しかし、問題があります。 1つのスレッドが完了した場合は、(何らかの理由で)独自のテストをより迅速にテストします。

      3ms 3ms 3ms 3ms
T1  |-***-***-***-***----------------|
      3ms  6ms     7ms      11ms
T2  |-***-******-*******-***********-|
    <--------------32ms-------------->

この場合、実際のスループットは測定されたスループットのためにはるかに優れています 最も遅いスレッドに囲まれています. 。したがって、私の質問は、マルチスレッド環境でのコード実行のスループットをどのように測定すべきかということです。

役に立ちましたか?

解決

どうですか throughput[t] = numberOfTests[t] / overallTime[t] スレッドごとに個別に t, 、そして、すべての平均を計算します throughput?

また、範囲や標準偏差などを計算して、より良い画像を取得することもできます。個人的に私はとても好きです ボックスプロット. 。しかし、数字自体だけが面白いでしょう。

他のヒント

少し遅れていることは知っていますが、あなたの質問に関連する2つのブログ投稿があります。最初の説明 スループットの測定方法 (および応答時間)。二番目 スループットをグラフ化する方法について説明します.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top