|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
专门做了这个例子;而java的这个例子好像就是为了教学而写的,很多教学目的的例子是不考虑优化、性能的。BrentBoyer是EllipticGroup的一位程序员,他在IBM开辟者网站上宣布了一篇名为“强健的Java基准(RobustJavaBenchmarking)”的文章。这篇文章包括两个部分,次要探求了怎样完成无效的Java基准。起首,他叙述了以后编译器下分歧JVM有着分歧的特征和优化,而这些特征或是优化有大概会对功能测试发生负面影响。
举例来讲,假设有一段庞大的代码段,最初盘算失掉的是一个从未利用的值,那末强势编译器就会对这段代码举行优化,基原则会疏忽这段盘算。为了申明这一点,他在他哦个一台盘算机上一连运转了良多次不异的代码段,了局运转时都是4.9秒,但当他删除打印了局的println语句以后,运转工夫则延长到0.08秒。他还指出,工夫器度的粒度在分歧的操纵体系下是纷歧样的,因而在基准测试的时分,必定要弄分明以后体系的工夫器度粒度。他说,和System.nanoTime()比拟,System.currentTimeMillis()就不是一个器度运转工夫的好办法(),由于它在WindowsXP上只要15ms的精度(但在具有2.6内核的Linux上却能够到达1ms的精度)。
在论述了这些出格的举动以后,Boyer提到了一些在做典范的基准测试时简单疏忽的一些成绩,好比JVM缓存、资本接纳(如渣滓搜集、对象清算)。他以为制止这些成绩的独一无效体例是“预热(warmup)”代码直到代码到达一个不乱态。“预热”历程很耗工夫而且很具应战,由于有些JVM在其触发编译之前大概已将一个函数实行了10,000次(但在编译触发前,代码还处于剖析形态)。代码到达不乱形态以后,基准必需对这段代码运转屡次,然后才干对了局做出无效的统计剖析。
别的,Boyer还倡议接纳基准框架来做基准测试,他自己就编写了如许一个框架。该框架可以展现以分歧数量的元从来会见数据布局(原生数组、ArrayLists、Vectors、HashMap、TreeMap等等)中的数据的差别。Boyer向人人展现了两个风趣的剖析了局:(1)即便运转时长久到以纳秒计数,其基准框架仍能盘算出均匀会见工夫。(2)分歧负载下,某些数据布局的反响使人十分受惊。个中一个出格的例子是ConcurrentHashMaps与TreeMap的对照:在一样具有1024个元素时,CurrentHashMaps的体现要远远好过TreeMap,但当元素数目上升到1024x1024的时分,二者体现就相差不年夜。这很出人意料,由于hashmap的搜刮工夫是常量,但trees的搜刮工夫倒是log(n)。除却这些使人受惊的奇异的了局,这篇文章仍是十分值得一读的,特别是在对Java代码举行基准评测时,Boyer提出的倡议仍是值得参考的。
检察英文原文:TheChallengesinJavaBenchmarking
来自:http://www.infoq.com/cn/news/2008/08/java-benchmarking
再说第三点:我并没有提到服务器也要整合,然后是IDE,一个好的IDE能够200%提高开发的速度,就说图形方面:你是经过简单托拽和点击就能实现功能好那。 |
|