続AO Bench

CLでAO bench - * *scrap* 続き。

どうしたら効率的且つスマートに(Lisp的に)書けるかよく分からず、やけくそとばかりに副作用を使いまくって使い捨てvectorを減らしたり無差別に型指定をつっこんだりなどした結果
sbcl 34sec -> 20sec
xyzzy 1406sec -> 728sec (on VMWare Fusion 2.0)
となった。

xyzzyでは型指定が無意味っぽいので高速化はほぼconsingの削減による効果だと思う。sbclの方は型指定の効果が大きい。

Evaluation took:
20.701 seconds of real time
18.934425 seconds of total run time (17.458036 user, 1.476389 system)
[ Run times consist of 2.642 seconds GC time, and 16.293 seconds non-GC time. ]
91.46% CPU
49,555,570,272 processor cycles
7,577,055,272 bytes consed

しかしconsingが未だ膨大。型指定arrayとか使わなきゃいけないのかな。
Flash10は7秒とかなんだよなー。
sbclコンパイラだしもっとできる物だと思うんだけど全くもって勉強が足りない。


一応コード
http://gist.github.com/66945
思い付きで書いたような箇所が至る所にあったり副作用を隠蔽する気が全く見られないなど色々と残念なことになってると思われます。

あああ

(random 1)ってやって整数が返ってきたからrandom-realなんて作っちゃったけど(random 1d0)でいいのか。1秒速くなった。



nsubsamples=8