2009/02/07 20:05 Rew◆grX5Zj [URL]
|
ちょっと面白そうだったので処理時間についても検証してみました
V0もしくはV1が1の時に処理をする、という所は同じで、添付ファイルのA〜Fの方法に関して、[1](V0,V1)=(0,0)、[2](V0,V1)=(1,0)、[3](V0,V1)=(0,1)、[4](V0,V1)=(1,1)の4パターンで検証しました。
方法: 各イベントを別々のコモンイベントに入れ、10000回ループ内でイベント呼び出しをしてその時間を計る(イベント呼び出しとループにかかった時間は引いてあります) 結果: [1]の時 【A】 約90ミリ秒 【B】 約90ミリ秒 【C】 約160ミリ秒 【D】 約90ミリ秒 【E】 約190ミリ秒 【F】 約140ミリ秒 [2]の時 【A】 約200ミリ秒 【B】 約230ミリ秒 【C】 約330ミリ秒 【D】 約180ミリ秒 【E】 約250ミリ秒 【F】 約160ミリ秒 [3]の時 【A】 約110ミリ秒 【B】 約110ミリ秒 【C】 約320ミリ秒 【D】 約180ミリ秒 【E】 約260ミリ秒 【F】 約160ミリ秒 [4]の時 【A】 約200ミリ秒 【B】 約230ミリ秒 【C】 約320ミリ秒 【D】 約180ミリ秒 【E】 約260ミリ秒 【F】 約160ミリ秒
考察: A,B,Dのように単純な条件分岐しかない形ならば、条件を満たさない時の処理は早い。 A,Bのようにラベルジャンプが入ると、そこでそれなりに時間がかかるようだ。特に(予測はしていたが)ラベルの文字列が長くなると、それだけ時間がかかる。 一番時間がかかったのはCの方法で、イベント呼び出しに引数を渡す必要があったせいと、条件分岐が多かったせいだろう。ソースが見やすくなるというメリットもあるが、処理時間を優先させたいなら使わないのが吉。 同じイベント呼び出しでも、Dの方法はかなり早かった。完全に別のイベントに分離できる場合ならその方がいいかもしれないが、引数の数が増えるとその分遅くなるということも考慮しておくべき。 Eの方法は平均して時間がかかるようだ。条件が複数ある場合はソースが見やすくなるが、やはり処理時間優先なら別の方法を使ったほうが良い。 Fはどのような条件でも処理時間のブレが少なく、また、条件を満たしたときの処理がもっとも早かった。
感想: 正直Fがこんなに早いとは思っていませんでした。これからはこの方法を使って行きたいと思います。 では、参考までに。
---------
>>200 そうですね。読んでいただければスレッドの乱立を防ぐこともできますので、いいと思います。 あくまでも読んでいただければの話ですが。
|