Java 8快多少?

Java SE 8已于昨天发布 。 传统上,每个新的主要JRE版本都提供免费的性能提升。 我们还能再得到免费的午餐吗? 这次收益有多大?

让我们对其进行基准测试。

基准方法

  • 使用3个不同的JRE版本(SunJDK 1.6.0_26 ,OpenJDK 1.7.0_51和OpenJDK 1.8.0 )运行相同的代码。 该代码本身是为Java 6编写的(在语法和JDK API的用法上),并为带有OpenJDK 1.7的Java 6进行了编译。
  • 每次运行大约需要55分钟。
  • VM参数: -Xmx1536M -server
    软体: Linux 3.2.0-59-generic-pae
    硬件: Intel® Xeon® CPU W3550 @ 3.07GHz
  • 每次运行都能使用OptaPlanner解决13个计划问题。 每个计划问题需要运行5到几分钟。 并行解决多达2个计划问题。
  • 解决计划问题不涉及任何IO (启动期间要加载输入的时间只有几毫秒)。 一个CPU完全饱和。 它会不断创建许多短命的对象,然后GC会收集它们。
  • 基准衡量每毫秒可以计算的分数数量。 越高越好。 为拟议的规划解决方案计算分数并非易事:涉及许多计算,包括检查每个实体与每个其他实体之间的冲突。

要在本地重现此基准, 请从源代码构建optaplanner并运行主类GeneralOptaPlannerBenchmarkApp

基准结果

执行摘要

jdk6vs7vs8摘要

我的观察:

  • 在最大的数据集(Machine Reassignment B10)上,其他任何数据集的大小都相形见,, Java 8比Java 7快20% ,已经比Java 6快17%
  • 在某些情况下,Java 8的速度比Java 7慢。特别是对于课程安排数据集,Java 8的速度比Java 7慢6% 。希望Java 8的新版本能尽快解决此性能6%问题。
  • 平均而言,Java 8仅比Java 7快1% 。而Java 7已经比Java 6快16%
  • 尽管这是OpenJDK 8的第一个最终版本,但我在Java 8中没有发现任何回归。OptaPlanner的示例是100%可再现的,因此,正如预期的那样,不同的JRE在每次迭代中给出的结果完全相同。

原始基准数字

JDK 云平衡200c 云平衡800c 机器重新分配B1 机器重新分配B10 课程安排c7 课程安排c8 考试安排S2 考试安排S3 护士名册M1 护士排班MH1 体育赛事安排NL14
SunJDK 1.6.0_26 46462 44963 94567 28655 5473 6989 6954 3785 3232 2948 1977年
OpenJDK 1.7.0_51 53683 49798 116553 33733 6182 7848 8243 4606 3645 3377 2445
OpenJDK 1.8.0 54687 51625 135102 40529 5798 7357 8048 4441 3637 3324 2321
6⇒7 15.54% 10.75% 23.25% 17.72% 12.95% 12.29% 18.54% 21.69% 12.78% 14.55% 23.67%
7⇒8 1.87% 3.67% 15.91% 20.15% -6.21% -6.26% -2.37% -3.58% -0.22% -1.57% -5.07%
数据集规模 12万 1920k 50万 250000k 21.7万 14.5万 1705千 1613k 18k 12k 4k

结论

在大型数据集上,Java 8显然更快。 而且这无需更改代码行。 平均而言,结果令人信服(使用当前版本),但始终欢迎免费午餐。

翻译自: https://www.javacodegeeks.com/2014/04/how-much-faster-is-java-8.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值