2010-04-21 183 views
0

我写了简单的load testing tool来测试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--------------> 

在这种情况下,实际吞吐量是多少是由的 最慢线程界,因为测量吞吐量的更好。所以,我的问题是如何测量多线程环境下代码执行的吞吐量。

回答

1

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

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

+0

是的,我前段时间在看箱子情节。这对于测试结果可视化来说非常有趣。谢谢。 – 2010-04-21 10:07:49

1

我知道它有点晚,但我有两个博客文章与您的问题相关联。第一个描述how you measure throughput(和响应时间)。第二个describes a way to graph throughput

+0

我知道这有点晚了,但我必须评论:你的第一篇文章非常好。感谢分享。 “ – 2014-03-31 13:42:33

+0

”建立数据库连接时出错“:,( – Crasher 2014-05-14 17:01:13

+0

@Crasher - 嗯,那很奇怪,我今天就来看看吧 – 2014-05-14 18:37:01