java作为商业应用最为流行,商业框架最丰富的开发语言,十多年来得到了长足的发展,功能、运行效率得到了大幅大的提高,但是再怎么也是依赖虚拟机JVM才能运行的语言,比编译型语言运行时多了一个解释环节,当然现在有即时编译技术,解释一次,以后运行就可直接运行,但是还是离不开JVM。所以说java性能达到甚至超过C++有点过了。
影响程序运行速度的因素有很多,先就java和C++的最基本特性说。
先说C++
1、C++是基于C扩展而来,是C的超级,而C是公认的效率最好的高级语言,仅次于汇编语言,当然汇编语言不是高级语言。
2、C++语言的开发离不开类库,这些类库的底层也都是C为基础开发出来的,效率也没问题
3、C++与操作系统有库函数直接调用,控制精细、高效
4、C++是编译型语言,编译连接后多余的东西不会包含在程序当中,程序容量小
对比java
1、java天生就是为跨平台而生,所以平台差异性,都通过JVM过滤掉了,所以不管是Windows、Linux、Unix、MacOS,只要可以跑JVM,那么java程序就能跑,但是效率方面要看JVM。
2、JVM是基于C开发的,就是个语言的编译、支持系统,需要与操作系统密切交互,用C语言开发是必然的选择。
3、JVM是不可裁剪的,只要跑就是一整套,即便是一个hello world 程序,和复杂应用一样都需要完整的JVM系统
4、Java程序需要占用更大的内存空间
基于以上的两方面的特点,现在看看系统喜欢哪一类。
1、cpu的效率取决于高速缓存的效率,缓存有限,最大也就30M水平,还要十多个核心抢着用,所以缓存很金贵,省缓存就是提高性能,C++个头小,更能跑。
2、内存,现在电脑的内存都很大新电脑8GB起,服务器1TB的都有,但是内存不都是装程序的,还有数据呢,所以小程序,可以省下更多内存,用于数据的缓存,缓存多就是提高性能。
可以看出C++比java更适合cpu高速跑。
当然java也好C++也好本身都有很多优化技术,再优化,上面说的依旧有效。