0

我编写了简单的负载测试工具来测试 Java 模块的性能。我面临的一个问题是吞吐量测量算法。测试在多个线程中执行(客户端配置测试应该重复多少次),并记录执行时间。因此,当测试完成时,我们有以下历史记录:

4 test executions
2 threads
36ms overall time

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

目前,我通过以下方式计算吞吐量(每秒)1000 / overallTime * threadCount:.

但是有问题。如果一个线程将更快地完成它自己的测试(无论出于何种原因)怎么办:

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

在这种情况下,实际吞吐量要好得多,因为测量的吞吐量受最慢线程的限制。所以,我的问题是我应该如何测量多线程环境中代码执行的吞吐量。

4

2 回答 2

1

如何throughput[t] = numberOfTests[t] / overallTime[t]分别为每个线程t,然后计算所有的平均值throughput

然后,您还可以计算范围和标准偏差等内容以获得更好的图像。我个人非常喜欢箱形图。但只有数字本身会很有趣。

于 2010-04-21T10:03:35.227 回答
1

我知道它有点晚了,但我有两篇与你的问题相关的博客文章。第一个描述了如何衡量吞吐量(和响应时间)。第二个描述了一种绘制吞吐量的方法

于 2010-09-09T14:05:00.930 回答