阅读更多

204顶
1踩

编程语言

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

2009-08-31 13:33 by 副主编 ouspec 评论(41) 有40548人浏览
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.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

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

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

  • Linux内核及内核编程之二Linux2.6后的内核特点

    3.2 Linux 2.6后的内核特点    Linux 2.6相对于Linux 2.4有相当大的改进,主要体现在如下几个方面。    1.新的调度器    Linux 2.6以后版本的Linux内核使用了新的进程调度算法,它在高负载的情况下有极其出色的性能,并且当有很多处理器时也可以很好地扩展。在Linux内核2.6的早期采用了O(1)算法,之后转移到CFS(Completely Fair Sc...

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

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

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

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

  • 记一次编译linux 2.6 和4.10内核源码

    0x00前言 很早就想开始学习linux内核漏洞的利用,之前的调试方式是借助kgdb来在两个vmware中调试,实际操作起来是没问题的。然而最近看到很多文章是使用qemu+gdb来调试的,因此决定尝试一下这种调试方式,第一步就是编译linux源码,本文将简述一下编译linux2.6源码和4.10源码时遇到的坑。 0x01 编译linux2.6源码 编译linux2.6的源码的过程参考这里:h...

  • linux 2.6.11

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

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

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

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

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

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

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

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

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

  • 3.2 Linux 2.6后的内核特点

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

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

          输入输出设备 在任何计算机系统的更"外部"的一层是输入输出设备,包括像键盘、鼠标、声卡、显卡等显而易见的东西,还包括像游戏操纵杆以及辅助设备等不那么常见的东西。在2.6的开发周期里,许多Linux的用户端子系统得到了扩展,但大部分常见设备都已经非常成熟了。Linux 2.6中对这些设备的改进多半衍生于内核对外部总线支持的改进,比如蓝牙无线键盘以及其它类似设备。尽管如此,Linux 在好

  • Linux内核学习(包含Linux 2.6内核编译安装流程)

    Linux内核官方网站为:http://www.kernel.org或者使用git将源码clone下来(我这里使用的版本为2.6): clone下来的源码目录结构如下: 其中比较重要的目录的官方描述如下: 对应的中文描述如下: 2、升级GCC版本 由于腾讯云初始gcc版本为4.8.5,而编译内核需要的最低版本为5.1.0,所以需要安装高于5.1.0版本的gcc。 设置devtoolset-7 为默认的gcc编译器 : 再用gcc -v指令查看gcc版本可以看到已经升级到7.3.1了

Global site tag (gtag.js) - Google Analytics