新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
创新互联www.cdcxhl.cn八线动态BGP香港云服务器提供商,新人活动买多久送多久,划算不套路!
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网页空间、营销软件、网站建设、洛隆网站维护、网站推广。这篇文章主要为大家展示了如何实现Benchmark框架,内容简而易懂,下面让小编带大家一起学习一下吧。
简介
使用过JMH的同学一定会惊叹它的神奇。JMH作为一个优秀的Benchmark框架带给了我们无数的欢乐。作为一个有极客精神的程序员,那么有没有想过去自己实现一个Benchmark框架呢?
在实现Benchmark框架的时候有需要注意些什么问题呢?快来一起看看吧。
八条军规
这里叫军规实际上不合适,只是借用一下军规的来彰显一下气势!大家不要太介意。
第一条军规
工欲善其事,必先利其器。想写好一个JMH当然需要深入了解JVM的运行原理,包括JIT,C1,C2编译器和他们的分层编译原理,JIT运行时的编译优化,包括Loop unrolling, Inlining, Dead Code Elimination,
Escape analysis, Intrinsics, Branch prediction等等。
当然,最好是参考一下大牛们写过的JMH框架,找点灵感。
最后大家要了解,Benchmark框架不是万能的。它只是在特定的环境中JVM的表现。
因为在Benchmark中我们肯定是要做循环的,一般来说就是某某方法运行多少次,这种比较简单的循环。实际上,JVM运行的代码是非常复杂的。Benchmark远远不能代表JVM的全部。
但是,见微知著,使用Benchmark还是可以一窥JVM的秘密的。
第二条军规
在JMH中,我们一般需要设置warmup和measurement的次数:
@Warmup(iterations = 10, time = 1, timeUnit = TimeUnit.SECONDS) @Measurement(iterations = 5, time = 1, timeUnit = TimeUnit.SECONDS)