InfoQ

新闻

Java基准所面临的挑战

作者 Steven Haines 译者 张龙 发布于 2008年8月11日 下午5时25分

社区
Java
主题
性能和可伸缩性
Brent Boyer是Elliptic Group的一名程序员,他在IBM开发者网站上发表了一篇名为“健壮的Java基准(Robust Java Benchmarking)”的文章。这篇文章包含两个部分,主要探究了如何实现有效的Java基准。首先,他论述了当前编译器下不同JVM有着不同的特性和优化,而这些特性或是优化有可能会对性能测试产生负面影响。举例来说,假如有一段复杂的代码段,最后计算得到的是一个从未使用的值,那么强势编译器就会对这段代码进行优化,基准则会忽略这段计算。为了说明这一点,他在他哦个一台计算机上连续运行了很多次相同的代码段,结果运行时都是4.9秒,但当他删除了打印结果的println 语句之后,运行时间则缩短到0.08秒。他还指出,时间度量的粒度在不同的操作系统下是不一样的,因此在基准测试的时候,一定要弄清楚当前系统的时间度量粒度。他说,和System.nanoTime()相比,System.currentTimeMillis()就不是一个度量运行时间的好方法(),因为它在Windows XP上只有15ms的精度(但在具有2.6内核的Linux上却可以达到1ms的精度)。

在阐述了这些特别的行为之后,Boyer提到了一些在做典型的基准测试时容易忽略的一些问题,比如JVM缓存、资源回收(如垃圾收集、对象清理)。他认为避免这些问题的唯一有效方式是“预热(warm up)”代码直到代码达到一个稳定态。“预热”过程很耗时间并且很具挑战,因为有些JVM在其触发编译之前可能已经将一个函数执行了10,000次(但在编译触发前,代码还处于解析状态)。代码达到稳定状态之后,基准必须对这段代码运行多次,然后才能对结果做出有效的统计分析。

此外,Boyer还建议采用基准框架来做基准测试,他本人就编写了这样一个框架。该框架能够展示以不同数目的元素来访问数据结构(原生数组、 ArrayLists、Vectors、HashMap、TreeMap等等)中的数据的差异。Boyer向大家展示了两个有趣的分析结果:(1)即使运行时短暂到以纳秒计数,其基准框架仍能计算出平均访问时间。(2)不同负载下,某些数据结构的反应令人非常吃惊。其中一个特别的例子是 ConcurrentHashMaps与TreeMap的比较:在同样拥有1024个元素时,CurrentHashMaps的表现要远远好于 TreeMap,但当元素数量上升到1024x1024的时候,两者表现就相差不大。这很出乎意料,因为hash map的搜索时间是常量,但trees的搜索时间却是log(n)。除却这些令人吃惊的奇怪的结果,这篇文章还是非常值得一读的,尤其是在对Java代码进行基准评测时,Boyer提出的建议还是值得参考的。

查看英文原文:The Challenges in Java Benchmarking

XP下精度也太差了. 发表人 Andy Yao 发表于 2008年8月12日 上午2时26分
  1. 返回顶部

    XP下精度也太差了.

    2008年8月12日 上午2时26分 发表人 Andy Yao

    System.currentTimeMillis()竟然在xp上面有这么严重的误差

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。