不同的开发语言在性能上的两个重要差别

June 5, 2011 by
Filed under: c++, design, java 

不同的开发语言在性能上的重要差别,除了编译执行与解释执行的效率之外,还有两个重要的差别,一个是方法调用的性能差别,另一个是对象的创建与回收效率。

前阵子用C++(我用的VC 2010)写一个搜索本地文件的小程序,把一段代码提取为方法之后(参数使用了引用避免对象拷贝的开销),竟然发现性能有非常明显的下降,这说明C++(准确地说是VC++)的方法调用成本是相当高的。

我们在用Java处理大量的计算和IO操作时,大量的对象产生与销毁,经常会导致频繁的Full GC,Full GC的时候系统的服务几乎停滞,大大影响了系统的性能。 因此Java的内存回收效率是非常低的。 另一个方面,我们在用java时,不论方法调用的层次有多深,都几乎不会影响系统的执行性能,说明java的方法调用性能是非常高的。

Perl社区曾尝试使用纯Perl移植Lucene,然后试图通过不断的profiling和tuning来改善Perl版本Lucene的性能,最终发现由于Perl语言方法调用的成本过高,且对象的频繁创建和销毁导致性能低下而未能如愿。 参考:
http://wiki.apache.org/lucy/MinimizingObjectOverhead

Digg This
Reddit This
Stumble Now!
Vote on DZone
Share on Facebook
Bookmark this on Delicious
Share on LinkedIn
Bookmark this on Technorati
Post on Twitter
Google Buzz (aka. Google Reader)

Comments

Comments are closed.