Scala和Java在多核处理性能的一次对比和思考
今天在网络上看到了一篇关于 Scala 和 java 多线程对比的文章《 Simple Scala actor Vs java Thread Vs Kilim Test , 原文链接: http://www.blogjava.net/BlueDavy/archive/2009/11/25/303662.html 。 》,乍看起来似乎是证明了 Scala 在多核处理性能上要强于 Java ,但经过我的分析和测试,发现结果并不靠谱。 这篇文章的作者知识面挺广的,写了 3 个版本的性能对比代码,并且得出了 Scala 在多核处理性能上要强于 Java 。但我要说的是这篇文章所得到的测试结果很不客观,因为里面所用的数据结构和算法有很大问题。 问题一, 1000 次循环里,居然拿 java 里面的 ArrayList 和 Scala 里面的数组比对性能,这是很致命的失误。从理论和实际情况看,数组本来就比 ArrayList 性能强很多倍。 问题二, scala 版本的 1000 次循环居然使用性能很烂的 for 循环,而不是性能更好的 while ,真是无语呀。 问题三, 1000 次循环里, java 版本里很耗时的一个动作是 String.valueOf(i); 看起来和 Scala 版本里面的 i.toString 相似,但实际上,这两种语言里面的内部实现是不同的。尤其是 java