Java为什么比C++慢?以及如何提高Java效率
3个回答
展开全部
java为啥慢? 1、java的分配内存java只把内嵌类型分配到堆栈上面,所有Object类型都分配到堆上面。c++可以把局部变量都分配到堆栈上面。显然,根据已有测试结果,访问堆栈的速度要远高于堆的速度。 启示1:c++不要返回structure,可以用引用先传入返回对象;启示2:java对象不要随便抛弃,尽量延长其生命周期;但并不是说要维持一个对象pool;2、java没有模板没有模板的缺点就在于需要进行类型转换。类型转换是一个很耗时的操作。 如何减少类型转换? 3、 4、c++的内存占用如何?tr1自带的hashmap(int,int),一个占用16字节,是实际数据的2倍;stl自带的map(int,int),一个占用32字节,是实际数据的4倍;自己写的话,常见的是1.2倍左右的空间占用。 5、为什么java版本的底层结构效率不佳?a)java没有数组转对象的功能b)java对象内存位置是自动分配,无法控制 java基本结构的内存占用情况 a)每个object占用8字节b)对象8字节对齐c)array本身占用12字节java底层优化的建议written by goodzhu 1、rule No1:不要优化代码!注:必须编写足够可读的代码; 2、rule No2:选定优化目标注:一般只有20%左右的代码是瓶颈所在 3、通用优化技术 A、操作符简约注:如把"/=2^n"简化为">>=n"; B、公共表达式提取注:double x=d*a*b;double y=e*a*b;可以修改为:c=a*b;x=d*c;y=e*c; // 后2句在cpu层次可以并行计算 C、预先计算不变的值如:for(int i=0;i
展开全部
任何事物的发展都有自下而上,自低级向高级发展的一个过程,计算机语言也一样。
自计算机被发明以来,计算机语言经历了 机器语言— 汇编语言—basic—C—c++、JAVA等的一个过程。(机器语言先不深究)
而在发展当中也遵循着从简单到复杂的一个规律,汇编语言是机器能直接运行的语言,自然在运行效率方面,当以汇编最高,其次是c和c++,最后是JAVA等;
C++和JAVA则偏向于面向对象,同样功能的代码,JAVA在编译过程当中会调用大量的库来实现,同时也会包含许多冗余代码(没有用到的代码),因此生成的可执行文件会相应的较大,在执行的过程中也会将大量时间用在层层调用上,因此效率大大降低;
关于如何提高Java效率,您可以从处理器性能方面考虑。
如今在嵌入式处理器方面,arm cortex-A8以及A9等处理器都在硬件方面增加了对JAVA的支持,可以大幅提高JAVA的运行效率,而至于采用x86架构的PC机处理器,也只能牺牲主频了。
自计算机被发明以来,计算机语言经历了 机器语言— 汇编语言—basic—C—c++、JAVA等的一个过程。(机器语言先不深究)
而在发展当中也遵循着从简单到复杂的一个规律,汇编语言是机器能直接运行的语言,自然在运行效率方面,当以汇编最高,其次是c和c++,最后是JAVA等;
C++和JAVA则偏向于面向对象,同样功能的代码,JAVA在编译过程当中会调用大量的库来实现,同时也会包含许多冗余代码(没有用到的代码),因此生成的可执行文件会相应的较大,在执行的过程中也会将大量时间用在层层调用上,因此效率大大降低;
关于如何提高Java效率,您可以从处理器性能方面考虑。
如今在嵌入式处理器方面,arm cortex-A8以及A9等处理器都在硬件方面增加了对JAVA的支持,可以大幅提高JAVA的运行效率,而至于采用x86架构的PC机处理器,也只能牺牲主频了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-11-16
展开全部
语言本身没有快慢,Java解释器做成硬件形式运行Java代码也未必比写残了的C++代码效率低
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询