栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用Java创建快速/可靠的基准测试?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用Java创建快速/可靠的基准测试?

简而言之:

(微型)基准测试非常复杂,因此请使用基准测试框架http://www.ellipticgroup.com/misc/projectLibrary.zip之类的工具-
仍然对结果持怀疑态度(“将微型信任放入微型基准”,Cliff Click博士)。

详细地:

有很多因素会严重影响结果:

  • System.nanoTime的准确性和精确度:最坏的情况是与System.currentTimeMillis一样糟糕。
  • 代码预热和类加载
  • 混合模式:仅在足够频繁地调用代码块(1500或1000次)之后,JVM的JIT编译(请参见Edwin Buck的答案)
  • 动态优化:取消优化,堆栈替换,消除无效代码(您应该使用循环中计算出的结果,例如打印出来)
  • 资源回收:垃圾收集(请参阅Michael Borgwardt的答案)和对象完成
  • 缓存:I / O和CPU
  • 您的操作系统总体上:屏幕保护程序,电源管理,其他进程(索引器,病毒扫描等)

Brent
Boyer的文章“严格的Java基准测试,第1部分:问题”(http://www.ibm.com/developerworks/java/library/j-benchmark1/index.html)很好地描述了所有这些问题以及是否/原因您可以针对它们(例如,使用JVM选项或预先调用ProcessIdleTask)。

您将无法消除所有这些因素,因此进行统计是个好主意。但:

  • 而不是计算最大值和最小值之间的差,您应该努力计算标准偏差(结果{1,1000×2,3}与{501×1,501×3}不同)。
  • 通过产生置信区间(例如,通过引导)来考虑可靠性。

上面提到的Benchmark框架(http://www.ellipticgroup.com/misc/projectLibrary.zip)使用了这些技术。您可以在Brent
Boyer的文章“ Robust
Java基准测试,第2部分:统计和解决方案”(https://www.ibm.com/developerworks/java/library/j-benchmark2/)中阅读有关它们的信息。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/419081.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号