JAVA开源小堂

暂无签名

  • 博客访问: 312552
  • 博文数量: 157
  • 用 户 组: 普通用户
  • 注册时间: 1970-01-01 08:00
个人简介

鏆傛棤浠嬬粛

文章分类

全部博文(157)

文章存档

2012年(8)

2008年(12)

2007年(5)

2006年(44)

2005年(81)

2004年(7)

我的朋友

分类: Java技术

2012-06-15 11:17:04

为了更方便的进行JAVA和Go的性能对比,于是有了搞个和Go类似的Benchmark测试框架的念头。看了两天Go的Benchmark.go源代码,写了个JAVA版的简化Benchmark测试工具。目前仅仅支持测试指定的单个文件、指定的包和当前目录下的所有文件等3个功能。功能非常的简单,够我自己用了。这里下载性能测试框架的源代码:BenchmarkRunner.java[@more@]
在阅读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];

}

}

然后,执行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
阅读(1824) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册