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 。

基准结果

执行摘要

我的观察:

  • 在最大的数据集(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

Java 8快多少?相关推荐

  1. c比java运行快的原因_C/C++比JAVA快的原因

    大多数程序员都认为C/C++会比Java语言快,甚至于觉得从Java语言诞生以来,"执行速度缓慢"的帽子就应当被扣在头顶,这种观点的出现是由于Java刚出现的时候JIT编译技术还不 ...

  2. 几年经验才能算java高级,快来看鸭~

    JAVA教程:高级Java开发人员是什么样的?很多人会用工作年限来衡量软件开发人员是否达到高级的水平,很多人认为是5年以上才能达到高级;也有人认为多年的经验只是一个数字,真正重要的是知识.技能和应用经 ...

  3. Java 11快多少?

    尽管大多数开发人员仍然使用Java 8 ,但Java 11还是在不久前发布的. 让我们看看其中哪个对OptaPlanner更快. 找出答案的最佳方法当然是运行OptaPlanner基准测试. 本文是我 ...

  4. Java更快地对基元数组进行排序?

    看起来Java的原语排序数组在不久的将来可能会提高性能. 弗拉基米尔·雅罗斯拉夫斯基(Vladimir Yaroslavskiy)已在core-libs-dev邮件列表中发布了一条消息 ,标题为&qu ...

  5. java三路快排,java二路快排很慢

    老师,以下是我二路快排的java代码 public class quickSortTwoway { public quickSortTwoway() {}; public static void qu ...

  6. java 最快平衡几个值_Java 集合框架面试问题集锦

    Java集合框架(例如基本的数据结构)里包含了最常见的Java常见面试问题.很好地理解集合框架,可以帮助你理解和利用Java的一些高级特性.下面是面试Java核心技术的一些很实用的问题. Q:最常见的 ...

  7. 分治法在求解凸包问题中的应用(JAVA)--快包算法

    分治法在求解凸包问题中的应用(JAVA) 之前写过一篇蛮力法在求解凸包问题中的应用(JAVA)还算简单易懂,没有基础的读者最好先去阅读以下. 这里用分治法来求解凸包问题,由于这个算法和快速排序十分相似 ...

  8. javascript和java哪个快_Javascript与Java相比有多快?

    Java和JavaScript都是编程语言.编程语言只是一堆抽象的数学规则.编程语言不快.或慢.他们只是. 应用程序的性能与语言无关.最重要的因素是应用程序架构.然后是算法效率.然后微优化.然后是编译 ...

  9. Java 单边快排 与 双边快排

    目录 一.单边快排 二.双边快排 一.单边快排 代码:已是该算法的最优情况 package com.wxl;import java.lang.reflect.Array; import java.ut ...

最新文章

  1. Liststring[] 如何去重
  2. 成功解决np.array(zip(x1, x2)).reshape(len(x1), 2) ValueError: cannot reshape array of size 1 int
  3. 减少模型方差的方法借鉴
  4. java 模板实现原理,Java Web 模板代码生成器的设计与实现详解
  5. “吃神么,买神么”的第三个Sprint冲刺总结
  6. Nginx----实现https站点
  7. 修改Maven本地仓库的位置 方法
  8. 一道头条算法题,一种不为人知的解法!
  9. enter对应的keycode_vue 添加enter回车事件
  10. LeetCode Factorial Trailing Zeroes (阶乘后缀零)
  11. 表单提交后打印后台传过来的数据
  12. python解析_第107天: Python 解析 PDF
  13. 单片机c语言reti的用法,51系列单片机的RETI指令分析
  14. Python-hrvanalysis库 挖掘心电信号特征 方法总结
  15. java 在线excel_Java实现最简单的在线打开保存Excel文件
  16. kdj值应用口诀_kdj指标怎么用?KDJ值应用口诀(2)
  17. [POI2006] TET-Tetris 3D
  18. 线程同步与互斥:互斥锁
  19. 设计模式--有道笔记的整理
  20. 网站推广----献给广大站长(转载)

热门文章

  1. tomcat(4)Tomcat的默认连接器
  2. 图论——Dijkstra+prim算法涉及到的优先队列(二叉堆)
  3. java改变变量编码方式_Java 10将如何改变您的编码方式
  4. kafka数据到flume_大数据摄取:Flume,Kafka和NiFi
  5. activiti 变量_如何在Activiti中使用瞬态变量
  6. java cuba_CUBA平台–用于快速应用程序开发的开源Java框架
  7. 侦听127.0.01_Spring 4.2中由注释驱动的事件侦听器
  8. 詹金斯搭建_与詹金斯一起将GitLab中的Gradle项目发布到Artifactory
  9. c#发送讯息_企业讯息
  10. assertj_AssertJ的SoftAssertions –我们需要它们吗?