关于长期以来Java性能方面的说辞的辟谣

网上有很多文章通过分析来说明Java的性能优化的好的话是不输C++的,还有一些是通过一些实际的代码测试来说明,不过在一些测试中明显是作弊了

本文不打算用长篇大论来论述,只是简单的说明一些真相

为什么很少有人怀疑C/C++ 的效率,为什么被怀疑的总是Java,为什么怀疑Python,PHP等脚本的人也不多?

Java不会做人,所为做人留一线,见后好xx。Java总是想要自己很完美,任何领域都想插一脚,做为一个完美的语言,性能上怎么能落后呢,这多没面子,于是发生了可笑的事情,总是想证明在性能上跟C/C++在一个级别上,而且每个个版本更新都会说性能有了很大的提升,提升了这么多年,结果呢?只能用一些作弊方式哄骗一些不明真想的围观群众

GC是Java性能的主要问题

其实真相应该是反过来的,不是GC影响了Java的性能,而是Java败坏了GC的名声,GC和malloc/free 都是动态内存管理的方法,申请内存的操作基本上是一样,不同的是选择释放的时机问题,通常GC的释放动作自动触发的,但实现上并没有禁止手动触发,只是一些语言拒绝这么做,全自动的内存管理一定做不到最优,全手动的可以有机会做到最优,很多时候半自动才是更好的选择。这里并不想详细讨论GC的实现,只是想客观的指出应该正确的认识GC,更多关于GC的内容请参考:http://www.iecc.com/gclist/GC-faq.html

JIT就可以达到和C/C++一样的速度

只能说JIT可以提高Java的速度,但不表示JIT就可以达到和C/C++一样的速度,理由很简单,编译型的语言也不是只有C/C++,都没有说能达到C/C++的速度,实际上这是鱼与熊掌不能兼得的问题,对于C语言的效率是在第一位的,为了效率可以放弃很多高级特性,而其它语言则是为了特性可以损失性能,这才是根本问题

Java的流行度证明Java语言足够好

语言流行的原因很多,实际情况是语言是不是足够好并不是影响流行度最大的原因,而是商业公司的支持,利益驱动下的结果,所以流行度不是评价语言好坏的标准,而是一个参考值

一次编译到处运行是Java最大的有点

那对于脚本来说,一次编写就到处运行又怎么说,而且没有哪个脚本会说这是它的优势,为什么Java却能把这个拿出来说事儿呢,而很多人的实际情况是一次编写到处调试

Java继承C++的优点,也抛弃了C++的一些弊端

我只能说C++最大的优点是有着仅次于C语言的性能,有着C一样的平台操控能力,几乎无缝的兼容C(这点有争议,其实这也是C++的历史包袱),这才是C++的竞争力所在,Java一点都没继承到,只是在语言特性上做了些文章,论这个,Python,Ruby等语言可能更让人认可

Java是简单的

这是Java问世以来就有的一句话,而且还经常被一些书引用,只能说Java比C++简单,但是不表示比C++简单就叫简单,因为还没有哪个语言说比C++还难

暂时写这么多,还有哪些希望大家补充

最后:Java总是喜欢和C++比,其实没有可比性,从语法上,能认可C++的语法设计好的人不多,从这点上跟C++比语法不能证明语法设计好。领域不同,C++是系统编程语言,C/C++是技术与性能的代名词(性能本来就是它的重要的目标之一,而C/C++使用者被要求必须了解平台相关的技术才能很好的使用),而Java是应用层语言,是理想主意的代名词(硬件可以提升性能,平台技术无需深入了解,理论上jvm可以提供一切,java什么都能做)

时间: 2024-11-03 16:25:43

关于长期以来Java性能方面的说辞的辟谣的相关文章

Java性能优化技巧及实战

Java性能优化技巧及实战 关于Java代码的性能优化,是每个javaer都渴望掌握的本领,进而晋升为大牛的必经之路,但是对java的调优需要了解整个java的运行机制及底层调用细节,需要多看多读多写多试,并非一朝一夕之功.本文是近期笔者给公司员工内部做的一个培训,主要讲述在系统压测过程中出现的性能问题,以及如何在编码过程中提升代码的运行效率,需要掌握哪些实战技巧.片子里干货较多,也很具有实操性,因此发文出来,共享给大家(部分数据做了去除公司特征信息,见谅).(PS:由于原文是ppt,因此做了导

Java性能调优笔记

Java性能调优笔记 调优步骤:衡量系统现状.设定调优目标.寻找性能瓶颈.性能调优.衡量是否到达目标(如果未到达目标,需重新寻找性能瓶颈).性能调优结束. 寻找性能瓶颈 性能瓶颈的表象:资源消耗过多.外部处理系统的性能不足.资源消耗不多但程序的响应速度却仍达不到要求. 资源消耗:CPU.文件IO.网络IO.内存. 外部处理系统的性能不足:所调用的其他系统提供的功能或数据库操作的响应速度不够. 资源消耗不多但程序的响应速度却仍达不到要求:程序代码运行效率不够高.未充分使用资源.程序结构不合理. C

Java 性能分析工具

如何利用 JConsole观察分析Java程序的运行,进行排错调优 http://jiajun.iteye.com/blog/810150 如何使用JVisualVM进行性能分析 http://jiajun.iteye.com/blog/1180230 全功能的Java剖析工具(profiler) http://www.blogjava.net/mrzhangshunli/archive/2007/08/27/140088.html http://www.cnblogs.com/jayzee/p

java性能优化技巧

一.通用篇 "通用篇"讨论的问题适合于大多数 Java应用. 1.1     new 1.1     new 11..11 不用 nneeww关键词创建类的实例 用new 关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用.但如 果一个对象实现了Cloneable 接口,我们可以调用它的clone()方法.clone()方法不会调用任 何类构造函数. 在使用设计模式(Design Pattern)的场合,如果用 Factory模式创建对象,则改用clone() 方法创建新的

JAVA性能优化的五种方式

一,JAVA性能优化之设计优化 设计优化处于性能优化手段的上层.它往往须要在软件开发之前进行.在软件开发之前,系统架构师应该就评估系统可能存在的各种潜在问题和技术难点,并给出合理的设计方案,因为软件设计和系统架构对软件总体设计质量有决定性的影响.所以,设计调优对系统的性能影响也是最大的,假设说,代码优化.JVM优化都是对系统微观层次的"量"的优化,那设计优化就是对系统"质"的优化. 设计优化的一大显著特征是:它能够规避某一个组件的性能问题,而是改良组件的实现;比方:

关于 Java 性能监控您不知道的 5 件事,第 1 部分

责怪糟糕的代码(或不良代码对象)并不能帮助您发现瓶颈,提高 Java? 应用程序速度,猜测也不能帮您解决.Ted Neward 引导您关注 Java 性能监控工具,从5 个技巧开始,使用Java 5 的内置分析器JConsole 收集和分析性能数据. 当应用程序性能受到损害时,大多数开发人员都惊慌失措,这在情理之中.跟踪 Java 应用程序瓶颈来源一直以来都是很麻烦的,因为 Java 虚拟机有黑盒效应,而且 Java 平台分析工具一贯就有缺陷. 然而,随着 Java 5 中 JConsole 的

Java性能优化指南系列(二):Java 性能分析工具

进行JAVA程序性能分析的时候,我们一般都会使用各种不同的工具.它们大部分都是可视化的,使得我们可以直观地看到应用程序的内部和运行环境到底执行了什么操作,所以性能分析(性能调优)是依赖于工具的.在第2章,我强调了基于数据驱动的性能测试是非常重要的,我们必须测试应用的性能并理解每个指标的含义.性能分析和数据驱动非常类似,为了提升应用程序的性能,我们必须获取应用运行的相关数据.如何获取这些数据并理解它们是本章的主题.[本章重点介绍JDK中提供的性能分析工具] 操作系统工具及其分析 程序分析的起点并不

Java性能优化,不得不付诸实践的JVM

暂附贴图,详情稍后叙述,欢迎留言交流 图一.JVM知识体系(部分) 图二.通过jconsole监控jvm 图三.通过jvisualvm监控jvm Java性能优化,不得不付诸实践的JVM,布布扣,bubuko.com

java 性能调优工具

1.jstack 用法jstack [option] pid -l long listings,会打印出额外的锁信息,在发生死锁时可以用jstack -l pid来观察锁持有情况 -m mixed mode,不仅会输出Java堆栈信息,还会输出C/C++堆栈信息(比如Native方法) 找出进程内最耗费CPU的线程,可以使用ps -Lfp pid或者ps -mp pid -o THREAD, tid, time或者top -Hp pid printf "%x\n" pid 得到pid的