细粒度粗粒度_粗粒度基准

细粒度粗粒度

在开发我们的软件时,我们全都与指标有关–即使我可以确定至少有10%的帖子中包含“不要估量”这一事实。 我们密切关注的指标之一就是性能。 或更准确地说,是在连接Plumbr的情况下运行应用程序时,我们消耗的额外CPU周期数量或使用的堆数量过多

用于衡量开销的一组测试有些复杂,既包含较小的综合测试,也包含实际应用。 前者相对容易,例如SPECjvm基准为我们提供了建立解决方案的良好基础。 伴随着我们自己的基准测试,我们有信心在微观层面上,我们的测试集足够彻底,可以相信结果。

为现实世界的应用程序构建一组具有代表性的测试被证明是一项艰巨的工作。 即使可以使用许多应用程序,但在多平台测试矩阵上设置应用程序时,其绝对的复杂性对于我们来说也太可怕了。 试着想象一下依赖关系和复杂的设置准则,您可能会开始理解痛苦。

因此,直到大约一年前,我们还是被困住了,我们找到了救星。 这次,救世主采用了名为“ DaCapo Benchmark Suite ”的预包装测试库。 该基准测试套件包含一组开源,真实世界的应用程序和库。 作者已配置这些库以运行非平凡的测试用例,例如以下示例:

  • 蜡染 –根据Apache蜡染中的单元测试产生大量可缩放矢量图形(SVG)图像
  • eclipse –为Eclipse IDE执行一些(非GUI)jdt性能测试
  • lusearch –使用lucene在包括莎士比亚和詹姆斯国王圣经的作品的数据集上对关键字进行文本搜索
  • tomcat –针对Tomcat服务器运行一组查询,以检索并验证生成的网页– tradebeans通过Jave Beans将Daytrader基准测试运行到GERONIMO后端,并以内存h2作为基础数据库

完整的测试集包括14个不同的应用程序和库,它们很好地表示了基于JVM构建的不同类型的应用程序。 测试本身也不是一件容易的事,这使我们现在也有机会信任我们的粗粒度基准测试。

该基准是免费下载和使用的。 设置它就像下载dacapo-9.12.jar并执行特定的基准测试一样容易:

java -jar dacapo-9.12-bach.jar tomcat

或者,在我们的情况下,我们希望查看-javaagent的开销:

java -javaagent:$path_to/plumbr.jar -jar dacapo-9.12-bach.jar tomcat

现在比较两次测试的输出,第一次运行是一个“裸”运行,并与我们的内存泄漏检测剂的第二连接,我们可以看到,测试用了281ms或10%以上的时间与运行Plumbr附:

java -jar dacapo-9.12-bach.jar tomcat
===== DaCapo 9.12 tomcat starting =====
Loading web application
Creating client threads
Waiting for clients to complete
Client threads complete ... unloading web application
===== DaCapo 9.12 tomcat PASSED in 2699 msec =====
Server stopped ... iteration complete
java -javaagent:$path_to/plumbr.jar -jar dacapo-9.12-bach.jar tomcat
===== DaCapo 9.12 tomcat starting =====
Loading web application
Creating client threads
Waiting for clients to complete
Client threads complete ... unloading web application
===== DaCapo 9.12 tomcat PASSED in 2980 msec =====
Server stopped ... iteration complete

有了这些知识,现在我们可以轻松地首先解决最大的问题-例如,在第一次运行中,我们在某些测试中造成了100%以上的开销。 现在我们可以放心地说,在所有情况下,我们都介于5%至20%之间,并且还在不断改善。

在运行测试时,请记住,与往常一样,您永远不应基于单次运行来做出决定,因为所有测试都有强制性的预热期才能获得有意义的结果。 在DaCapo上,您可以信任库本身来运行测试,直到通过指定-C启动参数来收敛结果为止,或者您可以通过在启动脚本中添加-n参数来自行指定运行次数。

但是,存在一些担忧-由于自2009年以来未对基准进行更新,因此某些测试已过时。 要么是因为技术本身已过时(例如SVG),要么是基准测试应用程序版本不再在生产站点中使用(例如6.0 Tomcat早期版本)。

参考: Plumbr Blog博客上的JCG合作伙伴 Vladimir Sor提供了粗粒度的基准测试

翻译自: https://www.javacodegeeks.com/2013/10/coarse-grained-benchmarking.html

细粒度粗粒度

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值