MLKitの謎のバグを修正してaobenchが動くようにした
AObench-SMLがSMLの処理系の一つであるMLKitに対応しました。
これまではMLKitにバグがあり、実数の指数表現リテラルのうち小文字の'e'を使ったもの(e.g. 2e3 10e~5 など)が使えませんでした。
単にレキサの規則が足りてなかっただけなんですが(基本的過ぎて)謎ですね。だれも気付かなかった…?
ま、ともかくこれの修正がマージされたのでmlkitでaobenchが動くようになりました!
自分で動かしてみたい方は、現時点でのMLKitの開発ヘッド(commit:1365653)以降でお試しください。
私の手元での実行結果を張っておきます。
動作環境は32bit Linuxです。
処理系 | real | user | sys |
---|---|---|---|
gcc | 0m3.846s | 0m3.846s | 0m0.006s |
smlnj | 0m9.545s | 0m9.384s | 0m0.041s |
mlton | 0m6.029s | 0m5.927s | 0m0.029s |
mlkit | 0m26.194s | 0m25.850s | 0m0.037s |
smlsharp2.0.0 | 0m31.322s | 0m30.846s | 0m0.089s |
polyml | 0m12.467s | 0m12.062s | 0m0.261s |
注) SML#は更新できてないので2.0.0を使ってますがSML#の最新版は3.0.1です。
polymlが意外と健闘してるという印象ですが、mlkitはちょっと振るわないですねぇ。
配列を持ちまわってヘビーループで書き換えるベンチマークなのでメモリアロケート周りを工夫しているmlkitには不利なのかも知れません。