Hatena::ブログ(Diary)

最遅メンヘル研究会

2010-06-21

WSHにやらせていたことでNode.jsに移行できるものがあれば移行しちゃったほうが高速で時間短縮になるかもね

Gin.jsを使って複数ファイル構文解析したかったのでWSHにやらせたんだけど、対象データ367ファイルで結構時間かかった。JScriptバージョンは5.8。測定にはtimeitを使った。

Elapsed Time:     0:03:24.843
Process Time:     0:00:01.046
System Calls:     4389576
Context Switches: 663676
Page Faults:      1163534
Bytes Read:       225608247
Bytes Written:    5009343
Bytes Other:      4229513

ファイル入出力はそんなに遅くないみたいだったけど、Gin#parseがやっぱり時間かかる。JScript 5.6でやってたときはもっとひどくて、3倍以上かかってた。あと、batでループさせるんじゃなくて、wsfのほうでEnumerator回すのも試したけど、それは遅くなったので、やめてる。

で、これ、COM使ってると言ってもADODB.Streamだけなので、簡単にNode.jsに移行できるよね?というわけで移植してみた。

そしたら43秒で終わって吹いた。さらにNode.js起動のオーバーヘッドとかシェルスクリプトリダイレクトが遅いんじゃないかと思って改良したら、10秒くらいで終わったという。もう一声ということで、この処理は出力の順序がどうでもいいので非同期にしたら、

real    0m8.281s
user    0m7.685s
sys     0m0.296s

ちょw10秒きったww Node.jsはCygwinでもあっさりビルドできて動いたので、WSHにやらせていたことでNode.jsに移行できるものがあれば移行しちゃったほうが高速で時間短縮になるかもね、という話でした。