GoogleのDartチームがDart SDK 1.3を発表した。これには非同期サーバサイドコードのパフォーマンス改善が含まれており、Dart VMは別のGoogleテクノロジーであるV8エンジンを使ったNode.jsと同レベルになったようだ。
Dartは新しいパフォーマンスのページを用意し、HTTPサーバのリクエスト/sec、平均遅延、最大遅延を3つのケースで測定することで、VMとdart:ioライブラリのパフォーマンスをグラフ化している。
-
Hello - すべてのリクエストに対して文字列 “world” で応答するシンプルなHTTPサーバ
-
File - 100KBのファイルの内容を返すHTTPサーバ
-
JSON - 動的に生成したJSON文字列を返すHTTPサーバ
このチャートによると、Dart 1.2と比べて、DartサーバはHelloとJSONのシナリオで2倍以上のトラフィックをさばけるようになり、Fileリクエストに対しては30%改善している。結果的に、平均遅延はHelloとJSONで半分以下に、Fileで約30%削減されている。これまで最大遅延はHelloとJSONそれぞれ約125msと300msで大きく変動していたが、今や値はかなり安定して約5msと7msになっている。
GoogleのエンジニアAnders Johnsenによると、Dartのサーバサイドのパフォーマンス改善は、世代別GCの利用、 Mac OSとLinuxにおける非同期I/O処理のシステムコール数の削減、VMコンパイラとdart:coreおよびdart:asyncのコードセクションの最適化によるそうだ。
2013年12月時点のTechEmpowerのベンチマークによると、Dart/nginxが約35,000 JSONリクエスト/secなのに対し、Node.jsは約70,000リクエスト/secだった。Dartは2倍以上のJSONリクエストを扱えるようになったので、Dart VMはNode.jsと同レベルになったのではないかと思われる。これは今後のTechEmpowerベンチマークで確認できるだろう。同じベンチマークによると、GoogleのGoで作ったシンプルなHTTPサーバは約215,000 JSONリクエスト/secで、すべてのフレームワーク/プラットフォームを凌駕しているようだ。