配列の中からランダムで1つ取り出す
「昨日の記事で出てきた、敵配列の中からランダムで1つ選ぶというやつ、あれって他の方法が速いんじゃないかと気になったので、今日はその動作速度を比較する実験をやった」
SHUFFLEノードを使うパターン
RandomIntegerInRangeノードを使うパターン
「実験に使ったのはこの2つのノード。1つはSHUFFLEは昨日のパターンを元に調整した物。もう1つは乱数を使った物。どちらも機能的には同じ、配列の中から1つ取り出してPrintString、その後配列から除外する。これを指定した回数だけ繰り返す」
妹「どっちが速かったの?」
「それは条件によって違う。具体的にはSHUFFLEの回数なんだけど。どちらも1000個の数字を含んだ配列で試した結果……」
・Countを1に設定して、それを1000回繰り返す
シャッフル 44ミリ秒
ランダム 31ミリ秒
・Countを1000に設定して実行
シャッフル 20ミリ秒
ランダム 21ミリ秒
「要するにSHUFFLEっていうのは結構時間のかかる処理だから、何度もやるようだったらランダムを使った方がずっと速い。ただカードゲームとかでも最初にシャッフルするだけで毎回はやらないわけで、ランダムと0固定では0固定の方がちょっとだけ速いから、回数が多くなるとシャッフル有利になる」
妹「昨日の爆弾だとどうなのかな?」
「昨日のは1個投げるたびにSHUFFLEしてたから、そこはイベントの最初で1度シャッフルするように変えるとしても、それでも数が多くないからやっぱりランダムの方が速い。1000回レベルじゃないとシャッフル有利にならないから、普通に使う分にはランダムが良さそう」