`

也谈什么时候Java比C++快

阅读更多

 

刚打开iteye就看到这个标题“Java什么时候比C++快”,觉得很好笑。

 

你要比,就比同等水平的基础上的相比,笨蛋写得C代码和C++代码,去和高手写的Java代码比效率,有什么意义呢?

 

我是写密码算法的,深刻知道算法C和C++实现和Java实现之间的效率差,甚至也比对过C代码和汇编代码的效率差,计算机是个死的东西,再怎么优化,Java也就是和C效率相当,也没有见过超越C的(是否能超越C++?)因为Java上的优化,C和C++也可以照做。

 

Java是成也GC,败也GC,不担心内存泄露是好事,但是大量垃圾不能及时回收,或回收大量垃圾带来的卡顿非常糟糕,这都是见仁见智的一些点。

 

但是存在一种场景,就是一个软件、一个程序中,计算不是最主要的效率影响因素,很大部分的运行时间消耗在网络IO、磁盘存取、人机交互等等地方,这样的情况下,Java实现和C/C++实现,总体效率是差不多的,因为再快的计算也被这些环节抹平了。这时候,Java易上手的优势就体现出来了。这才是Java的优势。

 

Java的优势在于OO,面向对象的分析和设计,以接近人类的理解模式和思考模式来设计程序。运行效率不是Java的首要目的。在提供了大量好用的API和拥有大量的开源组件后,在”一次编译,到处运行“这一目标大致实现后,开发效率比运行效率更加吸引人们的注意力。

 

 

3
5
分享到:
评论
1 楼 airu 2016-01-19  
JIT呢?C或者C++可没有。编译时优化谁都可以做,但是运行时优化呢?

相关推荐

    java推荐读物(介绍java相关经典书籍)

    谈到Java语言基础学习的书籍,大家肯定会推荐Bruce Eckel的《Thinking in Java》。它是一本写的相当深刻的技术书籍,Java语言基础部分基本没有其它任何一本书可以超越它。该书的作者Bruce Eckel在网络上被称为天才的...

    浅谈java的接口和C++虚类的相同和不同之处

    下面小编就为大家带来一篇浅谈java的接口和C++虚类的相同和不同之处。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,祝大家游戏愉快哦

    ACM java 基础

    文前声明:本文只谈java用于acm,且不推荐大家把java作为自己的第一语言玩acm; 为防止大家过多的把本应学习算法的宝贵时间浪费在学习语言上,同时也为实现lcy一队一java的要求;我根据自己用java的经验,总结成文...

    候捷谈Java反射机制

    JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它...本文将谈到java.lang.Class,以及java.lang.reflect中的Method、Field、Constructor等等classes。

    深入解析C++和JAVA的字符串

    谈一下C++的字符串:C++提供两种字符串的表示:C风格的字符串和标准C++引入的string类型。一般建议用string类型,但是实际情况中还是要使用老式C风格的字符串。 1.C风格的字符串:C风格字符串起源于C,并在C++中得到...

    一张图片让你看看离真正java工程师的差距

    在国内IT界,不谈Java--会有千万人跳出来和你争嘴。越是不心看到在这个领域被国外的同行越落越远。 接触Java也仅仅是在作毕业设计时用过。对Java也算是有了基本的了解,那时的Java才jdk才1.0,烂得很,连些基本能都...

    最新Java文档五百篇

    内不谈java--会有千万人跳出来和你争嘴的。 越是如此,我越是不忍心不说出来,越是不不忍心看到在这个 领域被国外的同行越拉越远--在硅谷的感受。 我是96年毕业的,正值java刚出,火气冲天之时。 我当时是一名C++...

    Java文档五百篇

    国内不谈java--会有千万人跳出来和你争嘴的。 越是如此,我越是不忍心不说出来,越是不不忍心看到在这个 领域被国外的同行越拉越远--在硅谷的感受。 我是96年毕业的,正值java刚出,火气冲天之时。 ...

    C++内存管理.doc

    因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C++超绝的性能。本期专题将从内存管理、内存泄漏、...

    电脑游戏中的人工智能制作[含代码]java/c++

    浅谈人工智慧   电脑游戏中的人工智能制作   棋类编程 部分1: 开始   棋类编程 部分2: 数据结构   棋类编程 部分3: 产生移动   棋类编程 部分4: 基础搜索   棋类编程 部分5: 高级搜索   棋类编程 部分6: 评估...

    浅谈Java 技术的发展

    回顾历史,计算机语言有着一个漫长的...在整个发展过程中,出现了非常经典的c 语言,史上最为强大的c++语言等 等,它们在各自不同的应用领域中都占有相当重要的地位,而该文要论述的则是最近几年比较热门的java 语言。

    浅谈C/C++内存泄露及其检测工具

    Smart Pointer,Garbage Collection等。Smart Pointer技术比较成熟,STL中已经包含支持...Garbage Collection技术在Java中已经比较成熟,但是在c/c++领域的发展并不顺畅,虽然很早就有人思考在C++中也加入GC的支持。

    浅谈C/C++内存泄漏及其检测工具

    GarbageCollection技术在Java中已经比较成熟,但是在c/c++领域的发展并不顺畅,虽然很早就有人思考在C++中也加入GC的支持。现实世界就是这样的,作为一个c/c++程序员,内存泄漏是你心中永远的痛。不过好在现在有许多...

    超爽的自学课件(java)

    大家也会从中了解到是什么使得Java如此特别,它为什么取得了这么大的成功,以及与面向对象的分析与设计有关的问题。 <br>(2) 第2章:一切都是对象 本章将大家带到可以着手写自己的第一个Java程序的地方,所以...

    积分管理系统java源码-WebAssembly:让C/C++在浏览器中运行

    首先,吐槽一下,第一章漫谈发展史,一谈就是90页,这也太漫了吧,截至今天才看到 17页 -_-b 虽然刚看到17页,出身计算机专业的我感觉内容已经硬核到快啃不动了,好家伙编译原理没学好的连发展史都无法了解的吗? ...

    Linux多线程服务端编程:使用muduo C++网络库

    《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...

    C++浅拷贝与深拷贝及引用计数分析

    不像Java一样,没有指针这个概念,所以也就不必担心与指针相关的一系列问题,但C++不同,从C语言沿袭下来的指针是其一大特点,我们常常要使用new/delete来动态管理内存,那么问题来了,特别是伴随着C++的继承机制,...

    深入理解_Java_虚拟机 JVM_高级特性与最佳实践

    / 301 11.3.2 公共子表达式消除 / 305 11.3.3 数组边界检查消除 / 307 11.3.4 方法内联 / 307 11.3.5 逃逸分析 / 309 11.4 Java与C/C++的编译器对比 / 311 11.5 本章小结 / 313 第五部分 高效并发 第12章 ...

    计算机操作系统进程调度算法模拟

    (1) 用C、C++、Java语言编程实现对5个进程采用动态优先权调度算法进行调度的过程。数据如下: 5个进程的到达时刻和服务时间见下表,忽略I/O以及其它开销时间,使用动态优先权算法进行调度,优先权初始值为100,请...

    C++好的面试题和不好的面试题

    从以前别人面试我,到我现在面试别人,谈不上什么面经,只能说我觉得的一些好的面试题目,和一些不太好的面试题目。  不好的面试题:  [1] 虚函数如何实现的。 在i = 0; ++i++之后,属这道题?了。我被别人问过,...

Global site tag (gtag.js) - Google Analytics