在什么情况下Java比C++快?
回复者:Cameron Purdy,Oracle中间件高级工程师。
这是根据我同时使用C++和Java工作超过20年所学到的,其实使用Java比C++还要早几年:
1、根据我的经验,当你把优化过的C++代码转换成Java代码,代码的速度会慢大约三倍。
2、根据我的经验,把Java代码转换成C++的代码,速度同样也会慢三倍。首先,这种比较根本没有意义,除非你能意识到用Java的方式去写Java代码,而不是像C++开发者那样去组织C++代码。
3、对于并发的数据结构使用Java往往更有效率。当数据结构不是并发使用时,JVM会消除内存屏障和同步,并倾向使用基于运行时性能分析的并发管理。
4、Java的动态内存管理往往更有效率,在过度使用动态内存管理和多线程的系统中效果尤其明显。
5、Java内联代码往往表现更加优秀,除非你基于分析器对C++代码进行了大量优化(或者确切地知道如何使用内联让C++更加高效……你肯定会爱上这些头文件!)。
6、使用Java的大型项目往往更容易优化,因为JVM为开发人员做了许多“全局”优化(比如内联动态加载的代码能力)。
一家之言,至少我的感觉是这样……
原文链接: quora 翻译: ImportNew.com - hackingwu
译文链接: http://www.importnew.com/16056.html
[ 转载请保留原文出处、译者和译文链接。]
from: http://www.importnew.com/16056.html
在什么情况下Java比C++快?相关推荐
- java 定义变量时 赋值与不赋值_探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值...
探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值 当基本数据类型作为普通变量(八大基本类型: byte,char,boolean,short,int,long,fl ...
- java 基本类型 不赋值_探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值...
探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值 当基本数据类型作为普通变量(八大基本类型: byte,char,boolean,short,int,long,fl ...
- 什么情况下java会出现堆溢出_【Java面试题第三期】JVM中哪些地方会出现内存溢出?出现的原因是什么?...
内存溢出(Out Of Memory)经常简称为OOM,在jvm中主要分为方法区.堆.栈.本地方法栈.程序计数器这几部分,其中程序计数器是唯一不会出现OOM的,也就是说其他区域都会出现OOM.下面来分 ...
- 你的企业在什么情况下需要人工智能?快来看看你需要具备哪些条件与能力吧!...
作者 | Anzhela Sychyk 译者 | 风车云马 责编 | 徐威龙 出品 | AI科技大本营(ID:rgznai100) 如今有关人工智能的炒作多得令人眼花缭乱.各个行业都极力采用这种技术, ...
- 为什么一定情况下scanf比cin快
有时候发现oj时完全没错的代码死活过不了,超时超时搞得我头炸掉,而且我敢保证代码逻辑等的都是没有问题的,就是超时.当时只想骂人,后来发现这是我在知识上的缺失. scanf是用指针操作的,没有类型安全机 ...
- java流处理为什么快_“任何情况下,都不可以堕胎”是道德普遍主义的观点。
[判断题]两个可能性之间可以彼此独立. [多选题]全球化正改变着我们的工作方式和生活方式,原因是我们首先必须处理( )和( )这两个问题. [判断题]"只许州官放火"体现了双重标准 ...
- java在gc正常工作的情况下_最新JVM面试题小结,程序猿直呼内行
这篇文章主要介绍了JVM面试题小结(2020最新版),觉得挺不错的,现在分享给大家,也给大家做个参考. Java内存区域 说一下 JVM 的主要组成部分及其作用? JVM包含两个子系统和两个组件,两个 ...
- java switch配合return_关于Java switch语句:关于Java switch语句 – 在每种情况下使用return和省略break...
鉴于这种方法,这是否代表了一些令人震惊的风格或语义失误: private double translateSlider(int sliderVal) { switch (sliderVal) { ca ...
- java中如何把时间封装成类,java-如何在不使用任何不推荐使用的类的情况下将日期从一种格式转换为另一种格式的日期对象?...
java-如何在不使用任何不推荐使用的类的情况下将日期从一种格式转换为另一种格式的日期对象? 我想将date1格式的日期转换为date2格式的日期对象. SimpleDateFormat simple ...
最新文章
- Spring学习12之整合Mybatis
- SpringBoot中使用log4j进行日志管理
- lookup无序查找_学习LOOKUP 函数实现无序查询
- 8、JavaScript深入浅出——数据类型
- Ubuntu 答疑:Ubuntu 添加和删除用户具体步骤及进程被占用的解决方式
- 方法重载 java 1614780176
- mybatis resultType resultMap
- ABAP 练习用航班数据
- 云栖号在线课堂—云服务器数据库快速入门特辑
- 龙芯2f灵珑一体机debian6系统重装
- [记录]关于电机反转和l298n和我的心里斗争
- 如何让Excel输入数据后自动保护,不能被修改
- Spring—事务配置及mybatis整合
- 从k8s.gcr.io拉取镜像
- 颜色RGB对照表(颜色大全)
- SAP IDES ECC6.0 EHP4 安装后的RZ10参数设置 减小内存 SGEN 编译组件
- Docker实现原理之 - OverlayFS实现原理
- 【云周刊】第130期:阿里研究院发布新网商五大预测,2020年将诞生第一个机器人网商?...
- html颜色参考 速查 在线取色,Color by Fardos - 配色/取色插件
- Tornadao—模板语法(自定义函数)
热门文章
- 信贷风控知识问答库(持续更新)
- 数据库SQL语句 SELECT LIKE like用法详解
- 用gdb调试core文件
- 十分钟教你开发EOS智能合约
- mysql创建新用户方法_Mysql创建新用户方法
- 学习笔记Hadoop(十三)—— MapReduce开发入门(1)—— MapReduce开发环境搭建、MapReduce单词计数源码分析
- 学习笔记Hadoop(八)—— Hadoop集群的安装与部署(5)—— Hadoop配置参数介绍、Hadoop集群启动与监控
- docker部署Redmine项目管理平台
- python 删除链表中倒数第N个节点
- ROS知识【13】:ubuntu下安装eclipse-CDT【非installor】