模仿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
相关文章
相关标签/搜索