模仿Go語言的Benchmark測試框架寫了JAVA版的簡化測試工具

爲了更方便的進行JAVA和Go的性能對比,因而有了搞個和Go相似的Benchmark測試框架的念頭。看了兩天Go的Benchmark.go源代碼,寫了個JAVA版的簡化Benchmark測試工具。目前僅僅支持測試指定的單個文件、指定的包和當前目錄下的全部文件等3個功能。功能很是的簡單,夠我本身用了。這裏下載性能測試框架的源代碼:php

BenchmarkRunner.javajava


在閱讀Go的源代碼過程當中,感受Go的接口太靈活了,不少簡化的寫法,讓不熟悉這種風格的人頭大。一會是面向對象,一會又轉成函數式編程,對從JAVA世界轉過來的人來講,很不適應。在實現Benchmark工具的過程當中,最麻煩的就是控制循環次數、步進長度和時間。在調試過程當中,一不當心,出現了10億次的循環,搞的我很鬱悶。目前我沒找到很好的解決辦法,暫時就把被測試操做的單次運行時間限制在1秒內,循環次數控制在1百萬次以內。等之後有須要再補上能夠參數調整的運行時間和循環次數。

使用方法:編程

首先在JAVA類裏面,定義相關的Benchmark開頭的測試方法。例如,框架

public void BenchemarkDoubleToString(B b){函數式編程

for (int i = 0; i < b.n; i++) {函數

//這裏放須要性能測試的方法工具

String tmp =""+flist[j];性能

}測試

}spa

而後,執行BenchmarkRunner

例如,

1.直接遍歷當前目錄下的class文件,並執行裏面的帶Benchmark開頭的測試方法。

java -server BenchmarkRunner

2.直接遍歷某個包下的class文件,並執行裏面的帶Benchmark開頭的測試方法。

java -server BenchmarkRunner org.aos.test

3.直接執行指定class文件裏面的帶Benchmark開頭的測試方法。

java -server BenchmarkRunner org.aos.test.DoubleToStringBenchmarkTest.class

這裏下載性能測試框架的源代碼:

BenchmarkRunner.java



測試結果樣例:

search package org.aos.test
BenchemarkFloatToString     500000     2582 ns/op
OK. Time costs:1 s
BenchemarkDoubleToString     500000     4990 ns/op
OK. Time costs:2 s
相關文章
相關標籤/搜索