2009年01月17日
もうちょっといじるっす
MT19937(メルセンヌ・ツイスター)をLSLで書いてみたんっすけど、
問題が多いので公開は見送りっす。
どうもぺんぎんっす( ◎v◎ )
速度比較してたんっすけど、良くないっすね・・・
listに624個要素を詰めてるっていうのもマイナスポイントっす。
[実験場所] http://slurl.com/secondlife/Rekal%20Thor/244/131/37
10,000個の生成にかかる時間を比較したっす。
以下は10回の平均っす。単位は秒っす。
llFrand
LSL2: 8.48618
Mono: 0.223984
xorshift_i コード
LSL2: 15.00481
Mono: 0.109913
xorshift_f コード
LSL2: 18.15633
Mono: 0.111567
mt19937
LSL2 (記録なし ※)
Mono: 8.56182
※Script run-time error Stack-Heap Collision
というわけで測定できなかったっす。
listを初期化
↓
listをコネコネ
↓ ↑
listから取り出してゴニョゴニョ(ここでreturnしてるっす)
っていう流れっす。
時間がかかってるのは「listをコネコネ」っす。
listの要素624個全部をコネコネしてるっすから、
かなり時間がかかってるっす。
しかも「ゴニョゴニョ」を624回するたびに「コネコネ」しないとダメっす。
つまり、初期化→コネコネで待った後は一気に進んで、
コネコネで待ってまたダーッと進んでコネコネ待ち・・・
全体的に遅いんじゃなくて、コネコネが遅いっす。
一応解決策も考えたっすけど、劇的に改善されないかぎりはお蔵入りっす。
公開もナシっす。
そうなった場合でもSFMTを頑張ってやってみるっす。
挑戦したい方は広島大学さんからCのソースを
ダウンロードしてやってみてくださいっす。
[09/02/27 追記]
Monoコンパイルで10,000個の生成に2.4[sec]で出来るようになったっす。
コードを公開したっす。
(注)あくまで遅いのはLSLでの話っす。
自分のコーディングに問題があるのかもっす。
メルセンヌ・ツイスターは優れたアルゴリズムっすよ。
問題が多いので公開は見送りっす。
どうもぺんぎんっす( ◎v◎ )
速度比較してたんっすけど、良くないっすね・・・
listに624個要素を詰めてるっていうのもマイナスポイントっす。
[実験場所] http://slurl.com/secondlife/Rekal%20Thor/244/131/37
10,000個の生成にかかる時間を比較したっす。
以下は10回の平均っす。単位は秒っす。
llFrand
LSL2: 8.48618
Mono: 0.223984
xorshift_i コード
LSL2: 15.00481
Mono: 0.109913
xorshift_f コード
LSL2: 18.15633
Mono: 0.111567
mt19937
LSL2 (記録なし ※)
Mono: 8.56182
※Script run-time error Stack-Heap Collision
というわけで測定できなかったっす。
listを初期化
↓
listをコネコネ
↓ ↑
listから取り出してゴニョゴニョ(ここでreturnしてるっす)
っていう流れっす。
時間がかかってるのは「listをコネコネ」っす。
listの要素624個全部をコネコネしてるっすから、
かなり時間がかかってるっす。
しかも「ゴニョゴニョ」を624回するたびに「コネコネ」しないとダメっす。
つまり、初期化→コネコネで待った後は一気に進んで、
コネコネで待ってまたダーッと進んでコネコネ待ち・・・
全体的に遅いんじゃなくて、コネコネが遅いっす。
一応解決策も考えたっすけど、劇的に改善されないかぎりはお蔵入りっす。
公開もナシっす。
そうなった場合でもSFMTを頑張ってやってみるっす。
挑戦したい方は広島大学さんからCのソースを
ダウンロードしてやってみてくださいっす。
[09/02/27 追記]
Monoコンパイルで10,000個の生成に2.4[sec]で出来るようになったっす。
コードを公開したっす。
(注)あくまで遅いのはLSLでの話っす。
自分のコーディングに問題があるのかもっす。
メルセンヌ・ツイスターは優れたアルゴリズムっすよ。
Posted by ぺんぎん at 21:32│Comments(0)
│スクリプト