変数 showtime には true、false または all を設定する(デフォルトは false)。
CLISP v.s. CMUCL
CLISP を使った場合と CMUCL を使った場合とで、どのくらい計算時間に差が出るか実験してみました。
| CPU | PowerPC G4 1.25GHz |
| OS | Mac OS X 10.3.8 |
| CLISP | 2.33.2 |
| CMUCL | 19a+ |
[実験 1] random 関数を用いて 1000 個の整数(概ね 10 桁)をランダムに発生させ、素因数分解するのにかかった時間を比較してみます。まずは CLISP から、
5 回の平均値は 9.426 秒でした。続いて、CMUCL でやってみましょう。(%i1) showtime:true; Evaluation took 0.00 seconds (0.00 elapsed) using 32 bytes. (%o1) true (%i2) for i:1 thru 1000 do factor(random(10^10)); Evaluation took 9.78 seconds (10.05 elapsed) using 34388.145 KB. (%o2) done (%i3) for i:1 thru 1000 do factor(random(10^10)); Evaluation took 9.72 seconds (10.11 elapsed) using 34003.969 KB. (%o3) done (%i4) for i:1 thru 1000 do factor(random(10^10)); Evaluation took 8.92 seconds (9.20 elapsed) using 30233.461 KB. (%o4) done (%i5) for i:1 thru 1000 do factor(random(10^10)); Evaluation took 9.77 seconds (10.08 elapsed) using 34466.152 KB. (%o5) done (%i6) for i:1 thru 1000 do factor(random(10^10)); Evaluation took 8.94 seconds (9.24 elapsed) using 31146.852 KB. (%o6) done
なんと平均 3.522 秒、実に 2.7 倍近くも高速という結果となりました。(%i1) showtime:true; Evaluation took 0.00 seconds (0.00 elapsed) using 48 bytes. (%o1) true (%i2) for i:1 thru 1000 do factor(random(10^10)); Evaluation took 3.45 seconds (5.27 elapsed) using 76363.359 KB. (%o2) done (%i3) for i:1 thru 1000 do factor(random(10^10)); Evaluation took 3.26 seconds (3.50 elapsed) using 76973.070 KB. (%o3) done (%i4) for i:1 thru 1000 do factor(random(10^10)); Evaluation took 3.38 seconds (3.63 elapsed) using 80868.266 KB. (%o4) done (%i5) for i:1 thru 1000 do factor(random(10^10)); Evaluation took 3.98 seconds (4.21 elapsed) using 97923.695 KB. (%o5) done (%i6) for i:1 thru 1000 do factor(random(10^10)); Evaluation took 3.54 seconds (3.78 elapsed) using 86055.703 KB. (%o6) done
[実験 2] 一旦終了してもう一例、今度は (x + y + z)100 の展開をやってみます。まずは CLISP から:
期待しつつ CMUCL で実行:(%i1) (showtime:true, expand((x+y+z)^100))$ Evaluation took 9.28 seconds (9.59 elapsed) using 9764.086 KB.
CMUCL の方が CLISP より 7 倍近くも高速という結果となりました。(%i1) (showtime:true, expand((x+y+z)^100))$ Evaluation took 1.35 seconds (1.44 elapsed) using 10945.242 KB.
[再実験] 以下の環境で再度実験してみました。
実験日 2006/03/14 2006/03/27 2006/04/11 2007/06/02 CPU Core Duo 1.66GHz OS Mac OS X 10.4.5 Windows XP SP2 Maxima 5.9.2.99rc2 5.9.3 5.12.0 5.12.0cvs LISP CLISP 2.38 SBCL 0.9.11 GCL 2.6.7 GCL 2.6.8 CLISP 2.41 実験 1(5 回の平均) 5.336 0.912 3.316 1.064 0.724 実験 2 6.31 0.50 0.44 0.42 2.92
実験日 2008/08/29 2008/08/30 CPU Core 2 Extreme 2.8GHz Core 2 Duo 2.66GHz OS Mac OS X 10.5.4 Maxima 5.15.0cvs LISP CMUCL 2008-08 SBCL 1.0.19 CMUCL 2008-08 実験 1(5 回の平均) 0.32 0.1816 0.346 実験 2 0.1600 0.2290 0.1800