2012-02-27 59 views
0

我想比較我所做的不同服務之間的響應時間。我聽說了顯卡,所以我決定用它在一個非常簡單的方式來撥打電話和測量它們,用這樣的一些功能:使用Caliper來對REST服務進行基準測試......還是不是?

public void timeCallingService(int reps) { 
    String url = "http://localhost:8080/myservice/rest/"+size; 
    for (int i = 0; i < reps; i++) { 
     new Client(url); 
    } 
} 

規模是顯卡給定參數和客戶端類我寫了只需撥打服務電話並檢查狀態答案是否正確。

一切的作品,除了一些服務,這需要太多的時間來回答很好,所以我在顯卡有一個錯誤:

Error: Runtime 1.06027641E11ns/rep out of range 0.1-1.0E10 

我試着像warmupMillis和runMillis一些參數玩,但它不似乎工作。

所以:

  1. 有沒有簡單的方法來解決我的問題?
  2. 如果沒有,我可以使用哪個基準框架進行比較,因爲我不想要任何複雜的事實?

回答

3

我爲此道歉。 Caliper 0.5有一些這樣的怪癖,但我們正在工作的Caliper 1.0(a)對於像這樣的計時期望會看到什麼更少的肛門保持性,(b)使很多值可配置(例如定時間隔;你可以使它長於1秒),並且(c)如果MicrobenchmarkInstrument的邏輯不適用於你,也可以插入不同的測量儀器。

不幸的是,我不能承諾發佈日期。 (

+0

好吧,沒關係,我終於改變了TimeMeasurer.java中的upperBound值(第81行),並且我的基準測試似乎很順利;) – 2012-02-28 09:15:20

0

TimeMeasurer.class中使用的卡尺(請參閱源代碼TimeMeasurer.java 80-84行)限制確定有效的可能時間。此限制爲lowerBound(0.1 ns)和upperBound(10 sec)。測量比upperBound或任何比lowerBound更快的度量都會拋出RuntimeOutOfRangeException。因此,如果你真的堅持這一點,那麼試着用另一個極限邊界來編譯這個類,或者向卡尺作者寫這個並建議添加一個運行時參數(比如設置upperBound),似乎(也可能是thuth真的在那裏)這個測量工具是用來測量快速過程,當納秒對分析來說是重要的時候,當你測量一些東西時, 10秒可能你應該使用另一種測量工具...無論如何有一個解決方案...

相關問題