【GDevelop】「インスタンスごとに繰り返す」は、できるだけ条件でインスタンスを絞り込んでから実行したほうが早いらしいぞ!

Discord で「インスタンスごとに繰り返す」の効率化に関する話題が挙がり、ちょっと調査したので、その結果をここに記録しておきます。

そうそう、まだ GDevelop の Discord サーバー に参加していない方は、ぜひ参加しましょう!
日本語フォーラムもあるよ😉

あと、余談ですが「インスタンス」とはシーン上に配置された「オブジェクト」のことです。
GDevelop は、それらを区別せずにどちらもオブジェクトと言ったりするのですが、明確に表現する必要がある場合、唐突にインスタンスと言ったりする、ややこしい おちゃめな一面がありますw
ご注意ください。

さて、表題の件、いきなり結論ですが……

「インスタンスごとに繰り返す」は、できるだけ条件でインスタンスを絞り込んでから実行したほうが早い!

つまり「インスタンスごとに繰り返す」内で、インスタンスを絞り込むより、あらかじめ親イベントの条件で絞り込んでおいたほうが、処理が早いということです。

↓具体的な例をご覧ください。

「繰り返しが先」イベントグループでは、「インスタンスごとに繰り返す」の中でインスタンスを絞り込んでいます。

対して「繰り返しが後」イベントグループでは、親イベントの条件でインスタンスを絞り込んでから、「インスタンスごとに繰り返す」を実行しています。

※ 「1000回繰り返す」は、処理にかかる時間をより明確にするためのものです。
※ 座標を条件にして絞り込んでいますが、結果的にはすべてのインスタンスが対象となっています。「繰り返しが先」と「繰り返しが後」で差はありません。

このイベントを処理するためにかかった時間は以下のとおりです。

「繰り返しが先」は、36.14ms
「繰り返しが後」は、17.39ms

という結果になり、なんでかは分かりませんが(ぉぃ)2倍以上早くなりました👍

まぁとにかく、「インスタンスごとに繰り返す」内の条件は通常の条件より負荷が高いっぽいので注意しましょう!ということです。めでたしめでたし!(雑)

コメント

このブログの人気の投稿

ブラウザ上で動く GDevelop オンライン版を試してみた感想

4ian 氏が Google 辞めて GDevelop に全振りする件

GDevelop の「イベント」を正しく理解しよう