■[perl6]Perl6 の速度にかんするメモ - 20110130
% time perl6 -e 'my $i=0; for (1..10_000) { $i++ }; say $i'
10000
perl6 -e 'my $i=0; for (1..10_000) { $i++ }; say $i' 6.97s user 0.11s system 98% cpu 7.199 total
% time perl -E 'my $i=0; for (1..10_000) { $i++ }; say $i'
10000
perl -E 'my $i=0; for (1..10_000) { $i++ }; say $i' 0.01s user 0.00s system 8% cpu 0.109 total
Perl6 がすげーはやくなった! みたいなこといってて、たしかにだいぶはやくなった感じはする。10, 000回もインクリメントするスクリプトも7秒以内におわる。
ちなみに起動時の initial コスト
% time perl6 -e 0 perl6 -e 0 1.23s user 0.05s system 88% cpu 1.430 total
■Python の VM を Perl で実装した話
http://svn.coderepos.org/share/lang/perl/PlPy/trunk/PlPy/
数年前にかいたやつ。関数ぐらいはうごく。クラスとかも定義できたような気がする。
Python は AST とりだしたりとか assembler とりだせるとか、そういうのがちょいちょいできて便利である。
■[js]最速な JavaScript のリファレンスマニュアルサイトをつくった
JavaScript のリファレンスマニュアルといえば MDN(Mozilla Developers Network) が有名ですが、MDN の資料は探索がめんどくさいし、表示が遅いということで使い勝手がわるいという問題がありました。
そこで、jQuery のリファレンスマニュアルサイトとして有名な jqapi.com とおなじよような使い勝手のサイトがあったらいいのになーとおもいました。
なので、つくりました。
サイト自体はすべて static なデータで構成されているので、github からデータを取得すれば、イントラや自分のマシン内で閲覧することも可能となっています。
なお IE での動作確認はしていないので、うまくうごかない場合は pull-req してください。
Internals
https://github.com/tokuhirom/jsref コードはこちらにあるので、ご利用ください。
データの生成部分(crawler.js)
データの生成はすべて node.js でやっています。スクレイピング処理は当初 wget でやっていたのですが、wget で処理すると、ディレクトリの処理が微妙なので、手でscraping することにしました。取得したデータは gdbm に保存しています。
HTMLデータの変換(convert.js)
取得したHTML をそのまま利用するのはむずかしいので script タグの除去などをおこない、HTML を整形します。
libxmlext というライブラリを利用して処理をしています。当初は jsdom を利用していたのですが、速度面にだいぶ難があったのでのりかえました( see http://d.hatena.ne.jp/tokuhirom/20111226/1324856715 )
目次 JSON の生成 (mkindex.js)
index.json という目次データの生成をします。ここでも libxmlext を利用しています。とくにむずかしい処理はおこなっていません。



