性能测试是非常难的,因为要考虑以下因素:
JVM预热:运行代码一开始会比较慢,然后越来越慢,直到达到一个稳定的阶段。
类加载:开始基准测试前所有的类必须装载进来。
JIT编译器:把代码编译成机器语言。
垃圾回收:基准测试时可能垃圾回收会被调用,这样会极大的增加测量出来的时间。
于是有了这样一个框架来解决所有以上的问题,
http://www.ellipticgroup.com/html/benchmarkingArticle.html
参考资料
[url=http://www.ibm.com/developerworks/cn/java/j-benchmark1.html]健壮的 Java 基准测试,第 1 部分: 问题[/url]
[url=http://www.ibm.com/developerworks/cn/java/j-benchmark2/index.html]健壮的 Java 基准测试,第 2 部分: 统计和解决方案[/url]
[url=http://www.ibm.com/developerworks/cn/java/j-rtm1/index.html]Java 运行时监控,第 1 部分: Java 系统运行时性能和可用性监控[/url]
[url=http://www.ibm.com/developerworks/cn/java/j-rtm2/index.html]Java 运行时监控,第 2 部分: 编译后插装和性能监控[/url]
[url=http://www.ibm.com/developerworks/cn/java/j-rtm3/index.html]Java 运行时监控,第 3 部分: 监控应用程序生态系统的性能与可用性[/url]
JVM预热:运行代码一开始会比较慢,然后越来越慢,直到达到一个稳定的阶段。
类加载:开始基准测试前所有的类必须装载进来。
JIT编译器:把代码编译成机器语言。
垃圾回收:基准测试时可能垃圾回收会被调用,这样会极大的增加测量出来的时间。
于是有了这样一个框架来解决所有以上的问题,
http://www.ellipticgroup.com/html/benchmarkingArticle.html
参考资料
[url=http://www.ibm.com/developerworks/cn/java/j-benchmark1.html]健壮的 Java 基准测试,第 1 部分: 问题[/url]
[url=http://www.ibm.com/developerworks/cn/java/j-benchmark2/index.html]健壮的 Java 基准测试,第 2 部分: 统计和解决方案[/url]
[url=http://www.ibm.com/developerworks/cn/java/j-rtm1/index.html]Java 运行时监控,第 1 部分: Java 系统运行时性能和可用性监控[/url]
[url=http://www.ibm.com/developerworks/cn/java/j-rtm2/index.html]Java 运行时监控,第 2 部分: 编译后插装和性能监控[/url]
[url=http://www.ibm.com/developerworks/cn/java/j-rtm3/index.html]Java 运行时监控,第 3 部分: 监控应用程序生态系统的性能与可用性[/url]