作品やら思ったコトを書き留めておく、付箋みたいなトコロ。
M.E.の思うトコロ
AS3版TinyMTのソースを公開。
http://meby960.moo.jp/mt/as3TinyMT.zip
ActionScript 3.0版のTinyMTのソースを公開します。
FlashDevelopのプロジェクトデータと、TinyMT.swcが付属します。
※TinyMTとはなんぞや? という人は、こちら を参照すると良いと思います。
私では、これ以上最適化できる気がしません!
なので、さらなる高速化が出来たらご一報ください。
なお、比較用のデータは、
AS3版 TinyMT を検証してみた
にありますので、参考にしてください。
ActionScript 3.0版のTinyMTのソースを公開します。
FlashDevelopのプロジェクトデータと、TinyMT.swcが付属します。
※TinyMTとはなんぞや? という人は、こちら を参照すると良いと思います。
私では、これ以上最適化できる気がしません!
なので、さらなる高速化が出来たらご一報ください。
なお、比較用のデータは、
AS3版 TinyMT を検証してみた
にありますので、参考にしてください。
コメント ( 0 ) | Trackback ( 0 )
AS3版 TinyMT を検証してみた
ネットワーク対戦用に作った、AS3版のTinyMTを検証してみました。
SFMTは、計算にint型 624個が必要で、同期に2496バイトが必要。
これでは、ネットワーク対戦での同期が大変なので、
計算に必要なバイト数が28バイトと少ないTinyMTを採用しました。
[速度比較]
とりあえず、速度比較。100万回値を作成してみました。
検証用サンプル
Math.random(): 25ms
Sfmt.nextUnif(): 81ms
Tiny.random(): 140ms
TinyMT.random(): 132ms
SFMTの1.7倍重く、Math.random()の5.5倍重いという結果に。
まぁ、メルセンヌ・ツイスタはもともと重いのでこんなものでしょうね。
[性能テスト]
同じ表示プログラムを用いて、乱数を可視化してみました。
このテストでは、色が均一に変化するほど性能が良いです。
2次元ベクトル性能テストを開く
一目見て、90年代初期の乱数が酷い結果ですね。
反面、最近の乱数生成器は、とても均一に値が分散していますね。
まんべんなく値が得られるので、移植元と遜色ないと思います。
[周期数テスト]
もし、移植元のTinyMTと同等であるならば、2^127-1
(約170,141,183,460,469,200,000,000,000,000,000,000,000)
の周期を持つことになります。
こちらにテスト用のページを用意しましたが、
こちらのPCでは生きている間に1週する気がしません。
SFMTは、計算にint型 624個が必要で、同期に2496バイトが必要。
これでは、ネットワーク対戦での同期が大変なので、
計算に必要なバイト数が28バイトと少ないTinyMTを採用しました。
[速度比較]
とりあえず、速度比較。100万回値を作成してみました。
検証用サンプル
Math.random(): 25ms
Sfmt.nextUnif(): 81ms
Tiny.random(): 140ms
TinyMT.random(): 132ms
SFMTの1.7倍重く、Math.random()の5.5倍重いという結果に。
まぁ、メルセンヌ・ツイスタはもともと重いのでこんなものでしょうね。
[性能テスト]
同じ表示プログラムを用いて、乱数を可視化してみました。
このテストでは、色が均一に変化するほど性能が良いです。
2次元ベクトル性能テストを開く
一目見て、90年代初期の乱数が酷い結果ですね。
反面、最近の乱数生成器は、とても均一に値が分散していますね。
まんべんなく値が得られるので、移植元と遜色ないと思います。
[周期数テスト]
もし、移植元のTinyMTと同等であるならば、2^127-1
(約170,141,183,460,469,200,000,000,000,000,000,000,000)
の周期を持つことになります。
こちらにテスト用のページを用意しましたが、
こちらのPCでは生きている間に1週する気がしません。
コメント ( 0 ) | Trackback ( 0 )