2013年11月21日木曜日

ベータが外れたみたい。(早くChromeにもDart VMが標準搭載されるといいなぁ。)

1.0 JUST RELEASED
Dart is a new language for scalable web app engineering.

ということで、せっかくなので、Dartとdart2js(DartのコードをJavaScriptにコンパイル)とJavaScriptでフィボナッチ数を求める速度にどの位の差があるのか調べてみた。










それぞれのFibonacci数を求める関数のコード。

Dart

int fib(int n){
  if (n < 2){
    return n;
  }
  return fib(n - 2) + fib(n - 1);
}

dart2js

// この部分っぽい
// 他の付随する部分は省略
function(n) {
  var t1 = J.getInterceptor$n(n);
  if (t1.$lt(n, 2))
    return n;
  return J.$add$ns(S.fib(t1.$sub(n, 2)), S.fib(t1.$sub(n, 1)));
}

JavaScript(BBEdit)

var fib = function (n) {
        if (n < 2){
            return n;
        }
        return fib(n - 2) + fib(n - 1);
    };

Chromium (Dartium)、n = 40で試してみたら、Dartが一番速くて、次にJavaScript、一番遅いのはdart2jsという結果に。Dartが一番速いのは思った通りだったけど、dart2jsがJavaScriptの2倍近くもかかったのはちょっと驚いた。(Chromium Blog/ Dart 1.0/ A stable SDK for structured web appsを読んで、差はもっとないと思ってた。 )Safariでも確認してみたら、JavaScript、dart2jsの両方ともChromiumより少し遅かったけど、差は同じく倍近くなことを確認。Firefox、IEとかではどうなんだろう。

フィボナッチ数を求めるだけの単純なものじゃなく、もっと複雑なものになると、JavaScriptとdart2jsでコンパイルしたJavaScriptの速度はそんなに変わらなくなるのかなぁ。

0 コメント:

コメントを投稿