文章标签 ‘Dartlang’

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发生了一些变化,所以代码做了些修正。

关于作者

残阳似血(@秦续业),程序猿一枚,把梦想揣进口袋的挨踢工作者。现加入阿里云,研究僧毕业于上海交通大学软件学院ADC实验室。熟悉分布式数据分析(DataFrame并行化框架)、基于图模型的分布式数据库和并行计算、Dpark/Spark以及Python web开发(Django、tornado)等。

博客分类

点击排行

标签云

扫描访问

主题

残阳似血的微博