Dart语言性能测试
在我之前的这篇文章中,将一个计算密集型的例子移植到了Go语言。这里,将同样的代码移植到了Dart语言,并与一些语言的结果进行了比较。
Dart是由Google开发的语言平台,主要用于编写web应用,它可以运行在服务器端和浏览器端(目前直接支持的只有Dartium:支持Dart VM的Chromium)。之所以称其为平台,是因为Dart包括了语言、基础库、一个编辑器(Dart Editor),一个可以运行在浏览器和服务器端的虚拟机,还包括一个将Dart语言编译至JavaScript的编译器(dart2js)。
Dart对开发人员还是比较友好的,拥有比较傻瓜式的开发环境;从语法的层面来说,Dart看上去是个语法糖版本的Java,所以,一个从事后端的Java程序员能够较快地上手。Dart推出的目的,是弥补JavaScript的一些不足,不过就目前来说,Dart想挑战大红大紫的JS,有很大难度。不过,在我看来,在Dart VM成熟以后,Google可以考虑将Dart移植到Android平台,这样,Chrome和Android就可以有统一的编程语言,Android平台本地程序也就可以容易地切换到web化,不过这一切的前提都是Dart取得一定成功,具体结果如何,还是让我们拭目以待吧。
现在还是回到测试上来,实验中,生成了256×256像素图片,每个像素点默认100次采样。
由于目前Dart处在早期开发阶段,所以随着时间的变化,本文结果可能有较大的变化。本文所使用的Dart SDK版本为10597。本实验Dart的代码托管在这里。
实验环境是Visual studio2010/.net framwork 4.0编译,Intel core2 P7570(2.26GHz主频)。VC++编译器选项参照了原作者,而chrome浏览器版本为21.0.1180.60 m,Java版本为1.7.0_03,Go版本为1.0.2。
最终的实验结果如下:
语言 | 运行时长(秒) | 比例 |
---|---|---|
VC++(基准) | 57.513 | 1.00x |
Java | 65.719 | 1.14x |
C# | 127.765 | 2.22x |
JsChrome | 266.616 | 4.64x |
Go | 310.695 | 5.40x |
Dart | 2819.643 | 49.03x |
从表格中可以看到Dart的性能让人大跌眼镜,不过,Dart还处在早期阶段,在语法还没完全成型的阶段,对性能的要求就有些太苛刻了。无论如何,本文对Dart的性能的测试也只是一个参考,没有什么实际意义。很多时候,性能的瓶颈并不都在计算这块上。
最后,关于Google的另一个语言Go,可以看到在Go1发布了以后,性能方面还没有明显提高。不过和Dart不同,大家对Go的性能的期许会高很多,相信Go1后的Golang会越来越好吧。
Update:在最新版build 16323版下花费2319.813秒,还是比较慢的,不过有了一些改进。另外,由于Dart API发生了一些变化,所以代码做了些修正。