Easy-ISLispでベンチマークテスト(2)
はじめに
Easy-ISLispのコンパイラなどを改良しました。OpenLISPに付属のガブリエルベンチマークにつき、再度計測してみました。
計測結果
eisl -s bench/runbench.lsp
Test 01: Fib -> ok, time = 0.000552s.
Test 02: Tak -> ok, time = 0.002464s.
Test 03: Stak -> 12, time = 0.009386s.
Test 04: Ctak -> ok, time = 0.005991s.
Test 05: Takl -> ok, time = 0.004593s.
Test 06: Takr -> ok, time = 0.002429s.
Test 07: Boyer -> T, time = 0.060741s.
Test 08: Browse -> ok, time = 0.261006s.
Test 09: Destru -> ok, time = 0.005731s.
Test 10: Travini -> ok, time = 0.034767s.
Test 11: Travrun -> ok, time = 0.476844s.
Test 12: Deriv -> ok, time = 0.045566s.
Test 13: Dderiv -> ok, time = 0.046484s.
Test 14: Divit -> ok, time = 0.009371000000000001s.
Test 15: Divrec -> ok, time = 0.002886s.
Test 16: FFT -> ok, time = 0.067063s.
Test 17: Puzzle -> ok, time = 0.105334s.
Test 18: Triang -> ok, time = 1.86932s.
Test 19: Fprint -> ok, time = 0.000393s.
Test 20: Fread -> ok, time = 0.000558s.
Test 21: Tprint -> ok, time = 3e-0600s.
Test 22: Frpoly -> ok, time = 0.048931s.
Total 3.060413s.
eisl -s bench/runbench.lsp
Test 01: Fib -> ok, time = 0.000552s.
Test 02: Tak -> ok, time = 0.002464s.
Test 03: Stak -> 12, time = 0.009386s.
Test 04: Ctak -> ok, time = 0.005991s.
Test 05: Takl -> ok, time = 0.004593s.
Test 06: Takr -> ok, time = 0.002429s.
Test 07: Boyer -> T, time = 0.060741s.
Test 08: Browse -> ok, time = 0.261006s.
Test 09: Destru -> ok, time = 0.005731s.
Test 10: Travini -> ok, time = 0.034767s.
Test 11: Travrun -> ok, time = 0.476844s.
Test 12: Deriv -> ok, time = 0.045566s.
Test 13: Dderiv -> ok, time = 0.046484s.
Test 14: Divit -> ok, time = 0.009371000000000001s.
Test 15: Divrec -> ok, time = 0.002886s.
Test 16: FFT -> ok, time = 0.067063s.
Test 17: Puzzle -> ok, time = 0.105334s.
Test 18: Triang -> ok, time = 1.86932s.
Test 19: Fprint -> ok, time = 0.000393s.
Test 20: Fread -> ok, time = 0.000558s.
Test 21: Tprint -> ok, time = 3e-0600s.
Test 22: Frpoly -> ok, time = 0.048931s.
Total 3.060413s.
OpenLispだとおよそ1.6秒です。まだまだ改良の余地がありそうです。
改良点
小整数をインタプリタにおいても即値化しました。従来、インタプリタでは即値化されておらず、インタプリタとコンパイラの間でデータを交換するときに余分なコードを生成していました。これが必要なくなりGCの負担も減少しました。
世界レベルの壁は高い
OpenLispの有料商用バージョンはさらに高速だそうです。Openlispを目標にしてさらに改良を試みます。
追記
Windows上のSWLで試してみたところ、Linuxよりも高速でした。比較したOpenLispもMINGW版です。OSの差の部分もあるみたいです。
Githubにて公開しています。
Author And Source
この問題について(Easy-ISLispでベンチマークテスト(2)), 我々は、より多くの情報をここで見つけました https://qiita.com/sym_num/items/2e37bdb21ff2a8fabd3f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .