阅读更多

204顶
1踩

编程语言

原创新闻 Java 7的新功能和Java 1.5,1.6,1.7的性能测试比较

2009-08-31 13:33 by 副主编 ouspec 评论(41) 有40645人浏览
Taranfx 说道:Java 1.4到1.5的修改很大,在编译compile-time 方面提升很大,Java 6在运行时runtime智能上做了优化,Java 7的主要改进:模块化。我们分析一下Java 7的主要修改:

    * Modularization 模块化– JSR 294 或者 Project Jigsaw
    * JVM 对动态语言的支持
    * 更多新的 I/O APIs 即将完成,包括真正的异步I/O 和最终的真实的文件系统 file system API – JSR 203
    * 对XML本地语言支持. (可能的probable)
    * Safe rethrow – 允许catch捕获语句让编译器更加聪明的知道基于什么情况下重新throw什么内容。
    * Null dereference expressions – Null 和 ‘?’ syntax 比较,语法类似 Groovy… 让开发者避免过多的空值验证。
    * 更好的类型推断 Better type inference
    * 多重捕获Multi-catch
    * JSR 296 – Swing 应用框架 application framework – 这方面需要更简单和简洁。

“小的”sun方面的修改有:

    * 升级的类加载class loader 架构;
    * XRender pipeline for Java 2D:是Open JDK ntegrators Challenge project项目;
    * Swing 更新 – JXLayer, DatePicker, CSS styling 等;
    * JavaFX

sun方面“快速”的修改,主要是性能更新:

    * 并发方面的细微调整 concurrency  tweaks (JSR 166),更好的支持Multicore
    * G1 垃圾收集器Garbage collector - 带来更小的中断时间,有希望替代 CMS (Concurrent mark sweep) GC
    * 64 bit VM的压缩指针Compressed pointer
    * MVM-lite – 多个虚拟机能够独立运行应用和允许用kill -9杀死java应用。

我测试了Java 1.5,1.6,1.7的性能

JDK 7版本:

> java -version
java version "1.7.0-ea"
Java(TM) SE Runtime Environment (build 1.7.0-ea-b66)
Java HotSpot(TM) Client VM (build 16.0-b06, mixed mode, sharing)


测试环境:Dell D630 笔记本运行 Windows 7 RTM (32 bit) , Intel Core 2 CPU (2.4GHz),  3GB RAM.

测试数据:

Test 1. 添加5百万string 数值。

Test 2. 5百万 ArrayList <String> 数据插入,使用Test 1数据。

Test 3. 5百万键值的HashMap <String, Integer>,每个键-值对通过并发线程计算,测试并发能力。

Test 4. 打印5百万 ArrayList <String> 数值到文件,并且回读。

四次测试结果如下:





结论是:

Java 5 <=== 18% faster=== < Java 6 < ===46% faster===< Java 7





详情查看:http://www.taranfx.com/blog/?p=1754
  • 大小: 54.7 KB
  • 大小: 21.6 KB
204
1
评论 共 41 条 请登录后发表评论
41 楼 xy_z487 2009-10-19 13:08
[flash=200,200][/flash][align=center][/align][/size][size=small][/size][size=xx-small]
[list]
[*]
引用
引用
引用
[b][/b][i][/i]
引用
引用
[flash=200,200][/flash][*][*]
[*][*]
[flash=200,200][/flash][url][/url][img][/img]
  • [*]
  • [*]
[/url][url][/url][url]
  • [*]
[u][/u]
引用
引用
[/list]
40 楼 wangyinglong 2009-10-18 07:49

    [*]

    [*]
[img][/img][url][/url]
[/b][b][b][/b][/i][i][u][/u]
引用
引用

    [*]
39 楼 wangzaixiang 2009-10-16 09:07
我还是对闭包最感兴趣。

设想闭包出来了,GWT的开发也会更简洁得多。
38 楼 snipking 2009-10-16 08:49
xyqck163 写道
  * Null dereference expressions – Null 和 ‘?’ syntax 比较,语法类似 Groovy… 让开发者避免过多的空值验证。
------------------------------------------
我看着这条是最有用了  用起来可能会频繁点,别的不敢兴趣,其他的改进我要么接触不到,要么很少接触,无所谓了

同感
37 楼 anlaneg 2009-10-16 08:47
我觉得这个测试的可信度并不高,没有列出测试用代码,也没有图像截屏.所谓空口无凭啊!同时还有一点,java7是否对以上测试用到的类进行了优化.这个问题没有讨论.


如果这些类被优化了,只能说java7在这些类上比别的jvm跑的快.


36 楼 beckrabbit 2009-10-16 08:44
依旧1.4... 都是那websphere6.0害的
35 楼 yhbngt 2009-09-29 10:21
支持。
顶。。
java速度又提升了。
34 楼 jssfy 2009-09-14 17:05
支持一下呵呵,现在1.7还是体验版吗?
33 楼 nova 2009-09-03 15:44
1.4中...
32 楼 witcheryne 2009-09-03 09:10
hellolaojiang 写道
我一直希望jdk在语法上让string也支持switch。。。

这个东西太有用了,强烈支持.

支持..
这个非常有用..
31 楼 abu 2009-09-03 00:20
还在1.4与1.5之间徘徊挣扎
30 楼 clyman 2009-09-02 14:07
hellolaojiang 写道
我一直希望jdk在语法上让string也支持switch。。。

这个东西太有用了,强烈支持.

用枚举呗
29 楼 hellolaojiang 2009-09-02 12:33
我一直希望jdk在语法上让string也支持switch。。。

这个东西太有用了,强烈支持.
28 楼 8821249 2009-09-02 10:56
mudong 写道
还在1.5挣扎的飘过

还在1.4中挣扎呢!
27 楼 wubo19842008 2009-09-02 09:38
我一直希望jdk在语法上让string也支持switch。。。
26 楼 mudong 2009-09-02 09:33
还在1.5挣扎的飘过
25 楼 steeven 2009-09-01 18:55
垃圾收集呢?被楼主收集了?
24 楼 zhangdaiping 2009-09-01 17:13
学不动了。
23 楼 key232323 2009-09-01 16:27
    static String readFirstLineFromFile2(String path) throws IOException {

        try (BufferedReader br = new BufferedReader(new FileReader(path)) {

           return br.readLine();

        }

    }


也可以这么写代码???比较酷
22 楼 stanomy 2009-09-01 14:06
不过这也是测试数据,说白了就是广告

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 很不错的linux2.6内核总结

    linux内核图解梳理,内核协议栈收发包处理,netfiler报文过滤子系统,xfrm安全子系统,高性能网络防火墙等。

  • 开发人员眼中的Linux 2.6内核

    开发人员眼中的Linux 2.6内核2004-07-13    李庆明 张静       点击: 48开发人员眼中的Linux 2.6内核Linux 2.6内核的推出,无论是巩固Linux在服务器领域的主流地位,还是推进它在桌面操作系统领域的推广进程,都将起到不可估量的作用。开发人员更应从深层次的角度来考察Linux 2.6内核为

  • Linux 2.6内核的精彩世界(三)

                                                                    核心硬件支持    随着Linux的这些年的发展并逐步进入主流行列,从内核所支持的设备类型来看,每 一次的内核发布,都像是一次跳跃:支持新兴的技术(2.4的USB),支持古老一些的传统技术(2.2的MCA)。发展到Linux2.6,不被Linux支持的设备已经相当少了。P

  • Linux 2.6内核的精彩世界

    级别: 初级Joseph Praneich 2003 年 9 月 11 日Linux 内核2.6版的开发已经接近尾声,2.6测试版发布已经二个月了,正式版预计明年年初发布。作为一个主要发布版本,2.6相对于2.4有很大的改动;它引 入了许多新的特性,同样也去除很多过时的特性。它在哪些方面有大的改动?它对Linux的开发人员以及其他层面的Linux用户可能有什么样的影响?阅读 本文,

  • Linux 2.6内核的精彩世界(一)

          2003年岁末,Linux社区最鼓舞人心的消息莫过于期盼已久的Linux内核2.6版正式推出。2003年岁末,Linux社区最鼓舞人心的消息莫过于期盼已久的Linux内核2.6版正式推出。作为一个主要发布版本,2.6相对于2.4有很大的改动;它引入了许多新的特性,同样也去除很多过时的特性。     它在哪些方面有大的改动?它对Linux的开发人员以及其他层面的Linux用户可能有什么样

  • linux 内核 区别,linux 2.4 和2.6 内核区别

    随着Linux2.6的发布,由于2.6内核做了教的改动,各个设备的驱动程序在不同程度上要进行改写。为了方便各位Linux爱好者我把自己整理的这分文档share出来。该文当列举了2.6内核同以前版本的绝大多数变化,可惜的是由于时间和精力有限没有详细列出各个函数的用法。特别声明:该文档中的内容来自http://lwn.net,该网也上也有各个函数的较为详细的说明可供各位参考。如果需要该文档的word版...

  • 深入理解Linux内核-第3版 译者序、前言、目录 内核2.6.11

    如果你对Linux如何工作、其性能又为什么会如此之高怀有强烈的好奇心,你将会从这里找到答案。阅读本书之后,你会通过上千行代码找到自己的方式来区别重要数据结构和次要数据结构的不同,简而言之,你将成为一名真正的Linux高手。可以把我们的工作看作是畅游Linux内核的向导:我们讨论了在内核中使用的很多重要的数据结构、算法和编程技巧。在很多例子中,我们逐行讨论了有关代码片段。当然,你手头应当备有Linux源代码,你还应当乐于花一些功夫去解读那些为简洁起见而未完整描述的函数。

  • Linux2.6内核标准教程(共计8-- 第1个)

    共计8个压缩包 本压缩包是:part01.rar 出版社:人民邮电出版社 ·页码:368 页 ·出版日期:2008年 ·ISBN:7115187118/9787115187116 ·条形码:9787115187116 ·包装版本:1版 ·装帧:平装 ·开本:16 ·中文:中文 ·附带品描述:附光盘一张 ·市场价格:49元 内容简介 Linux内核是Linux操作系统中最核心的部分,用于实现对硬件部件的编程控制和接口操作。《Linux2.6内核标准教程》深入、系统地讲解了 Linux内核的工作原理,对Linux内核的核心组件逐一进行深入讲解。 全书共8章,首先讲解Linux系统的引导过程;然后对Linux内核的3大核心模块——内存管理、进程管理、中断和异常处理进行了深入的分析; 在此基础上,对时间度量、系统调用进行了分析和讨论;最后讲解了Linux内核中常见的同步机制,使读者掌握每处理器变量和RCU这两种新的 同步机制。 《Linux2.6内核标准教程》适合Linux内核爱好者、Linux驱动开发人员、Linux系统工程师参考使用,也可以作为计算机及相关专业学生深入学 习操作系统的参考书。 引用: 目录 第1章 Linux内核学习基础 1 1.1 为什么研究Linux内核 2 1.1.1 Linux的历史来源 2 1.1.2 Linux的发展现状 3 1.1.3 Linux的前景展望 3 1.2 选择什么版本进行研究 3 1.3 内核基本结构 4 1.3.1 内核在操作系统中的地位 4 1.3.2 Linux 2.6内核源代码目录树简介 5 1.3.3 Linux 2.6内核的新特性 8 1.4 如何阅读本书 9 1.4.1 内核探索工具 10 1.4.2 推荐阅读方法 12 第2章 引导过程分析 14 2.1 内核镜像的构建过程 15 2.1.1 编译内核的步骤及分析 15 2.1.2 内核镜像构建过程分析 16 2.2 系统引导过程分析 18 2.2.1 傀儡引导扇区 18 2.2.2 探测系统资源 21 2.2.3 解压内核镜像 35 2.2.4 进入保护模式 40 2.2.5 系统最终初始化 47 2.3 系统引导过程总结 47 第3章 内存管理 50 3.1 基础知识 51 3.1.1 存储器地址 51 3.1.2 分段机制 52 3.1.3 分页机制 59 3.2 内核页表的初始化过程 65 3.2.1 启用分页机制 65 3.2.2 构建内核页表 68 3.3 物理内存的描述方法 76 3.3.1 内存节点 77 3.3.2 内存区域 81 3.3.3 物理页框 85 3.4 物理内存的初始化过程 86 3.4.1 探测系统物理内存 87 3.4.2 初始化内存分配器 89 3.5 物理内存的分配与回收 101 3.5.1 伙伴分配算法 101 3.5.2 对象缓冲技术 103 3.6 内核地址空间 105 3.6.1 常规映射地址空间 105 3.6.2 固定映射地址空间 107 3.6.3 长久内核映射空间 109 3.6.4 临时内核映射空间 116 3.6.5 非连续映射地址空间 119 第4章 进程管理 128 4.1 进程与线程的概念 129 4.1.1 程序与进程 129 4.1.2 进程与线程 129 4.2 进程描述符 131 4.2.1 进程标识符 132 4.2.2 进程的状态 132 4.2.3 进程上下文 134 4.2.4 当前进程 139 4.3 进程的组织形式 143 4.3.1 进程标识符构成的哈希表 143 4.3.2 所有进程构成的双向链表 148 4.3.3 执行态进程组成的运行队列 149 4.3.4 阻塞态进程组成的等待队列 152 4.4 进程的创建过程 155 4.4.1 进程创建的接口函数 156 4.4.2 进程创建的处理过程 162 4.5 进程调度算法 177 4.5.1 进程的分类 178 4.5.2 进程优先级 178 4.5.3 时间片分配 181 4.5.4 进程调度时机 182 4.6 进程切换过程分析 183 4.6.1 选取合适进程 183 4.6.2 完成上下文切换 184 4.7 空闲进程的初始化 187 4.7.1 空闲进程的内核态栈 187 4.7.2 空闲进程的内存描述符 188 4.7.3 空闲进程的硬件上下文 190 4.7.4 空闲进程的任务状态段 190 第5章 中断和异常 192 5.1 基础知识 193 5.1.1 中断和异常的定义 193 5.1.2 中断和异常的分类 193 5.1.3 中断和异常的对比 194 5.2 处理机制 195 5.2.1 IA32架构下的处理机制 195 5.2.2 Linu

  • 现在的内核和2.6版本的内核有什么差别

    https://www.cnblogs.com/tcicy/p/8461344.html

  • Linux2.6内核 -- 结构的初始化

    Linux 内核中用到了大量的结构体,在编码规范中也给出了结构体初始化的规则,这篇文章中有对其的解释:http://blog.csdn.net/dlutbrucezhang/article/details/10296897,不过,这篇文章中并没有给出实例分析,下面我写了一段测试程序:#include #include struct test { int test_value1; float

  • linux 2.6.11

    《深入理解linux内核》第三版的源代码,linux 2.6.11版本,适合在阅读的时候查看。

  • linux2.6内核怎么看,怎样在Linux2?

    很早以前的小程序,比较简单但是觉得有趣  原理很简单,Linux查看进程的命令ps是通过系统调用sys_getdents实现,sys_getdents用户获取一个指定路径下的目录条目,实际上就是枚举  /proc/ 下的pid,这样我们只需要hook一下sys_getdents,把相应的要隐藏的pid信息去掉即可。以下是LKM代码,在Linux-2。6。14测试并运行成功  #include   ...

  • linux2.6内核怎么看,Linux2.6内核 -- 结构的初始化

    Linux 内核中用到了大量的结构体,在编码规范中也给出了结构体初始化的规则,这篇文章中有对其的解释:http://blog.csdn.net/dlutbrucezhang/article/details/10296897,不过,这篇文章中并没有给出实例分析,下面我写了一段测试程序:#include#includestruct test {int test_value1;float test_va...

  • linux2.6内核SD Card Driver详细解析之一

    *************************************************************************************************************************** 作者:EasyWave

  • Linux-2.6 所有版本内核源码下载

    在这里分享给大家一个链接,链接里面有Linux-2.6所有版本的下载链接,可以复制到迅雷上面一件下载,2.6版本还是比较适合用来剖析的,往上就有点难了。   下载地址:https://www.kernel.org/pub/linux/kernel/v2.6/   拿走 :)

  • 3.2 Linux 2.6后的内核特点

    算了,这小章真是没概念,不谢了

  • Linux过时了- 塔能鲍姆-托瓦兹辩论(Tanenbaum–Torvalds debate)

    FORM:http://www.hisnote.com/2013/10/27/tanenbaum-torvalds-debate/ 本文根据维基百科、码农逐梦者博客、oreilly出版社整理而成。 安德鲁·斯图尔特·塔能鲍姆博士(在comp.os.minix上叫 ‘ast’ ) 塔能鲍姆-托瓦兹辩论(英语:Tanenbaum–Torvalds debate),由Minix创作者安德鲁·斯...

  • Linux 2.6内核新变化

    内核抢占   内核抢占补丁在2.5系列中就已经被打上,接下来在2.6中也会打。这将显著地降低用户交互式应用程序、多媒体应用程序等类似应用程序的延迟。这一特性对实时系统和嵌入式系统来说特别有用。   2.5的内核抢占模块的工作由 Robert Love 完成。在先前的内核版本

  • Linux 2.6内核中新的锁机制--RCU

    http://blog.chinaunix.net/u2/78225/showart_1273258.html本文详细地介绍了 Linux 2.6 内核中新的锁机制 RCU(Read-Copy Update) 的实现机制,使用要求与典型应用。一、 引言众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而

  • linux内核2.6.18升级至2.6.26

    原创作者:运维工程师 谢晋 linux内核2.6.18升级至2.6.26内核升级 内核升级 该台系统内核为2.6.18,无法安装虚拟化性能优化工具,故要升级为2.6.26 将2.6.26的升级包上传至系统的usr/src目录下 连接到该台服务器,输入cd /usr/src到此目录下,输入ls命令查看2.6.26包是否存在 # cd /usr/src # ls 4. 输入tar -xvf linux-2.6.26.tar.gz解压该压缩包 # tar -xvf linux-2.6.26.t

Global site tag (gtag.js) - Google Analytics