月別アーカイブ: 2012年10月

Haxe vs TypeScript でベンチマーク対決

TypeScriptって速度はどうなの?速いの?ってことが気になったので、HaXeや素のJavaScriptと比較してみました。

比較にはAOBenchを使いました。

比較に使ったプログラム

HaXe版(HaXe2.10 @yoshihiro503さん移植https://github.com/yoshihiro503/aobench_haxe)
TypeScript版(https://github.com/shohei909/TypeScript_AOBench)
JSX版(JSX0.0.2 @kioku_systemkさん移植 http://kioku.sys-k.net/aobench_jsx/)
JavaScript版(http://kioku.sys-k.net/aobench_jsx/)

HaXe版はデッドコード削除を使用するにあたりちょっとだけ改変してあります。TypeScript版はHaXe版を元に書き変えて移植しました。

結果

HaXe TypeScript JSX(修正前) JSX(修正後) JavaScript
Google Chrome (Windows) [ms] 974 995 968 1125 1076
Firefox (Windows) 1544 3698 3766 1604 1649
Browser (Android) 63158 64636 61327 57338 70425
Safari (iOS) 54876 59792 57831 43200 70800
JavaScriptのファイルサイズ [Byte] 6010 8163 7963 17591 6968

HaXeは安定して高速ですね。ファイルサイズも小さくなっています。以前のHaXeはもうちょっと大きいファイルを出力してたんですが、HaXe2.10で強力なデッドコード削除最適化が実装されて、未使用なコードがJavaScriptファイルに反映されなくする–dead-code-eliminationオプションが強化されました。

一方、TypeScriptで出力されたJavaScriptは直訳っぽい素直なコードで読みやすいんですが、あんまり速くありません。基本的にはインライン展開が無い分の差だと思うんですが、気になるのは2倍以上の差がついたFirefoxの結果です。インライン展開されてるはずのJSXでも遅い結果になっています。
続きを読む

HaxeやTypeScriptで使えるソースマップが便利。

JavaScriptを吐く言語を使う場合、ソースマップを使うとデバッグが楽ですよ。

ソースマップを使うとJavaScriptが実行エラーを起こしたときに、JavaScriptの行番号じゃなくってHaXeやTypeScriptの行番号が表示されるようになります。

こんな感じ。

これでまた一つJavaScriptを直接書く理由がなくなりますね。

ブラウザの設定

Chromeだとプラグインなしでこの機能が使えます。

方法

F12を押すと、Webインスペクタが開きます。その右下に設定ボタンがあるので、それをクリック。Enable source mapsにチェックを入れます。

コンパイルの設定

ソースマップを使うにはブラウザの設定だけじゃなく、.js.mapのファイルが必要です。HaXeやTypeScriptでは、このファイルをコンパイル時に生成するように設定できます。

HaXeの場合

コンパイラオプション-debugを使う

haxe -js script.haxe.js -main Main -debug

TypeScriptの場合

コンパイラオプション-sourcemapを使う

tsc script.ts -sourcemap

参考

Source debugging in Javascript – Haxe
Using Source Maps with TypeScript

TypeScriptをVisual Studioで使う。

先日、MicrosoftからTypeScriptという言語がリリースされました。

窓の杜 – 【NEWS】Microsoft、プログラミング言語“TypeScript”を公開。VS 2012向けのプラグインも

近頃、乱立しているJavaScriptを出力する言語です。
JavaScriptを出力する言語はすでにCoffeeScript, Dart, Haxe, JSXなどがあるわけですが、TypeScriptが魅力的なのが以下の点。

  1. すべてのJavaScriptはTypeScriptであり、JavaScriptライブラリの利用が簡単。
  2. 文法がActionScript3.0(EMCAScript4)に近く、厳密な型指定が可能。
  3. 有力なIDE(Visual Studio 2012)がサポートしている。

これ全部満たしてる言語っていままで無かったんじゃないでしょうか?
とりあえず、Visual Studioの使い心地がどんなものか気になるので、インストールして試してみました。ちなみにOSはWindows7。

続きを読む