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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win10 OpenCV3.3.0+VS2013配置大坑,OpenCV解决方案编译报错“找不到python36_d.lib”错误...

今天因为想要用OpenCV做图像识别,小白一个,在网上找到一个教程,但是需要配置OpenCV3.3.0的环境,于是又在网上找OpenCV3.3.0VS2013(因为我之前已经安过了VS2013),前面的都顺利执行,但…

正在编写推箱子游戏的自动求解程序

网上搜索了一下,有好多人现成的产品,不少国产的。编写这个程序只是为了回忆一下算法。不能丢了。 自动求解有俩种方案:一个是求最小行走步骤,一个是求最小推箱子数目。 第一种算法简单些,只要将小人推动的四个方向进行…

JS面向对象编程

什么是面向对象编程(OOP)?用对象的思想去写代码,就是面向对象编程。 面向对象编程的特点 抽象:抓住核心问题封装:只能通过对象来访问方法继承:从已有对象上继承出新的对象多态:多对…

mvp的全称_是让人提神醒脑的 MVP、MVVM 关系精讲!

前言很高兴见到你!我是《Jetpack MVVM 精讲》的独立原创作者 KunMinX,GitHub star 8.7k,专注于深度思考和 Jetpack MVVM 的分享。关于 MVP 和 MVVM 本质和区别的文章,本来我是不想写的,因为经过长达一年的耳濡目染 和对…

启航考研计算机课程,计算机考研专业课如何备考

计算机考研科目多,任务重,我们应该如何在有限的时间里更高效的复习,看一下天任启航考研为大家总结的复习计划吧!1、有计划,重基础计算机学科专业基础综合考试涵盖数据结构、计算机组成原理、操作系统和计算机网络基础等学科专业基…

IntelliJ中的实时模板

如上所述这里 ,的IntelliJ的现场模板可以让你轻松地插入预定义的代码片段到你的源代码。 我在下面发布了一些我最常用的模板,到GitHub上模板文件完整列表的链接(作为我设置新IntelliJ环境时的参考)以及将IntelliJ设置文件添加到G…

链家广州二手房的数据与分析——爬取数据

之前在博客分享了利用 R 和 rvest 包爬虫的基础方法。现在就来实战一下:爬取链家网广州 40,000 套二手房的数据。 之前在 Web Scraping with R 说过的爬虫方法在这篇中就不在赘述了。这里就分享怎么样爬取网站中翻页的数据。 >> Web Scraping across Multiple…

Vue脚手架搭建项目

全局安装vue脚手架 $ npm install -g vue-cli 卸载方法 $ npm uninstall -g vue-cli 查看vue版本(注意:大写的V) $ vue -V 创建项目 $ vue init webpack vue-app ? Project name vue-app ? Project description Vue Project ? Author Pr…

es安全组端口_从零开始在远程服务器(Linux)上搭建es,eshead和ik分词器

一、资源准备远程服务器一个(本教程为CentOS 64位)注:ik分词器版本需与es版本统一jdk1.8.0elasticsearch-head-master.zip二、开放端口注:本例采用的是阿里云服务器1.登录阿里云,选择控制台2.找到左上角的三条白线--》…

sipp模拟freeswitch分机测试(SIP协议调试)

1、freeswitch安装 1) 网上很多安装方法都不靠谱,系统版本,各种依赖库一堆问题,下面是验证的可行的。 yum install -y http://files.freeswitch.org/freeswitch-release-1-6.noarch.rpm epel-releaseyum install -y freeswitch-config-vanill…

hd计算机技术,BD和HD的区别是什么?

BD和HD的区别是什么?我们在网上下载电影的时候,往往发帖子的童鞋会提示我们影片的规格,如所谓BD1280或者HD1024等等,一些朋友搞不清楚这是什么意思,实际上我们只能说BD和HD的区别是什么,关于1280和1024那完全是分辨率…

Java比以往任何时候都摇滚

在TIOBE索引上 ,Java和C长期以来一直排名第一和第二,并且随着最近发布的JDK 8 GA的发布,对于我们的社区来说,情况不会变得更糟。 Java简直就是岩石! 它是构建几乎所有应用程序的最佳平台。 但是,为什么Ja…

滚动条判断是否滑动到顶部底部

/*** [滚动条]*/$(window).scroll(function() {var scrollTop $(this).scrollTop(); // 滚动条距离顶部的高度console.log("滚动条距离顶部的高度-->" scrollTop);var scrollHeight $(document).height(); // 当前页面的总高度console.log("当前页面的总…

DotNet软件开发框架

这是我4月份发在donews博客上的文章,现在都转到博客园来,风满袖希望进一步阐述你的架构,我就将这篇文章转移到博客园。原文:http://blog.donews.com/shanyou/archive/2005/04/23/347792.aspx 以我个人的能力,没有足够的时间和…

vue 拷贝 数组_vue 使用lodash实现对象数组深拷贝操作

我就废话不多说了,大家还是直接看代码吧~export default {mounted() {this.init();},methods: {init() {let lodash require(lodash);let obj1 {a: 1,b: { f: { g: 1 } },c: [1, 2, 3],h: () > {return 123;},k: undefined};let obj2 lodash.cloneDeep(obj1);…

VBA代码分行

VBA代码分行如果是语句可以直接在要换行的位加一个空格一个下划: Dim MyPath As String, MyName As String, _ tmpPath As String如果是字符串可以加以加一个空格一个&和一个空格加一个下划线:x "ABCDEFG" & _"HIJKLMNO" 转…

[Swift通天遁地]五、高级扩展-(6)对基本类型:Int、String、Array、Dictionary、Date的扩展...

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)➤GitHub地址&a…

JavaFX中的塔防(5)

这是本使用FXGameEngine在JavaFX中创建塔防游戏的正在进行的教程的第5部分。 敌人现在飞向目标的攻击路径,炮塔瞄准并射击。 因此,最重要的部分在那里,但是仍然缺少许多细节。 游戏只是开始而没有给我们机会为下一个浪潮做准备。 它不显示分数…

消息提示框-事件冒泡

1 <!DOCTYPE html>2 <html lang"en">3 4 <head>5 <meta charset"UTF-8">6 <title>事件冒泡-提示框</title>7 </head>8 <style>9 button {10 width: 160px;11 height: 30px;12 backgr…

我是如何解决asp.net程序在dreamWeaver中布局乱码的问题

每次把asp.net程序导入Dw2004中时&#xff0c;总是出现乱码&#xff0c;也不知道是什么原因。今天我就换了一个版本&#xff08;DW8&#xff09;&#xff0c;发现以前的问题全都没了。我想肯定是我的DW出现了问题&#xff0c;因为以前也出现过一次&#xff0c;也是重装后解决掉…