2010-04-21 181 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