如题,都说C++运行比java快很多,具体体现在哪些方面呢?
阿里为什么选择java,而不是c++。
各有所长,领域不同。
1、C++比Java快,主要是语言的执行原理决定的,Java并不是要取代C++。Java有自己擅长的问题领域。
2、C++原生编译,直接生成对不同系统和CPU编译成优化过的指令集,直接执行,Java需要一次中间代码的再次跟进系统和CPU再次编译优化执行。所以流程上多一步。
3、C++性能优势体现在,现在很多数据库内核、图形软件都是C++开发的,追求性能的程序C++是王道。
4、Java主要做企业应用,比如网站、或者系统。C++开发网站太慢了,主要是开发速度,不是运行速度。
5、阿里主要是电商平台和支付系统,属于企业级应用开发,阿里也有C++比如自研的MySQL、OB数据库,以及优化JVM内核都是C++。
这个问题需要看情况。如果是相同机器里的桌面程序,单线程运行一个算法,c++比java快。因为c++直接编译成汇编执行,java需要运行在虚拟机里,先转成字节码然后再转汇编。 如果是分布式网络架构的,那就不只是和运行速度有关系了,还需要考虑多少个机器,网络IO,架构之类的,这方面java很擅长。 为什么选择java,因为不容易出错。 c++的野指针问题很麻烦,经常出现跑飞了但是不知道哪里飞的问题,java不会出现野指针,所以栈信息明明白白的在log里放着。而且java开发简单,适合学校批量培养人才。c++的大牛很难招,大部分人都只是学了个皮毛。 而且由于java简单的原因,社区非常活跃,中间件架构也多,而不少人写c++都是重复造轮子。 c++在不同平台语法可能不一样,有些特性只有某些平台支持,所以c++做不到完全的write once,run everywhere。
说的是JIT吧,借助于JIT,JVM可以对调用频繁的代码进行即时编译,加快代码运行。但如果C++优化到位的话,大部分场景还是C++快
这个是java / C++的benchmark比较
https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/java-gpp.html
有些场景可以
这里快需要指出什么维度的快。
如果说是执行速度。那肯定是C++快,毕竟一个是编译后执行,一个是编译后在虚拟机上解释执行。
如果说一个电商业务需求来了,我相信使用Java来开发还是比C++快的,这里有很多原因,比如Java生态系统比较好,很多东西拿来用即可,Java也不用关心内存管理的问题,而且Java代码可读性可维护性都比较好,新人也能比较快接手。
如果现在一个公司想招人做个O2O,招聘的时候,如果去组建Java团队也会比C++快,毕竟现在搞Java的很多。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。