主にウディタを使ってのゲーム製作についてのブログです ※更新は不定期
[PR]
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
【ウディタ】ループの処理負荷について
今日調べてたループに関する処理負荷をまとめておこうと思います。
<< ループ内の行数 >>
ループ処理を抜ける場合は
『ループここまで』コマンドまでの行数に応じて
処理負荷が変化します。
ループを抜けると言いましたが、ループを実行しない場合にも
行数が影響します。
-- ▼処理負荷比較 --
上記画像の結果のようにループ内の行数が多いほど
処理負荷がかかるみたいです。
行数が多いほど負荷が上がる原因は
ループを終了するときに『ループここまで』コマンドを
探索しているためだと思われます。
<< ループ中断 >>
『ループ中断』コマンドが実行されると
『ループ中断』コマンドの位置から下方向に
『ループここまで』コマンドを探索します。
ループを抜けるときにループ内の行数に応じて
負荷が変わったように
『ループ中断』~『ループここまで』間にある
処理行数に応じて負荷が変わります。
-- ▼処理負荷比較 --
<< ループ開始へ戻る >>
『ループ開始へ戻る』コマンドが実行されると
『ループ開始』地点へ戻ります。
このとき『ループ開始』地点は予め記録されており
『ループ開始』地点へ戻るときの処理負荷は一定だと
思われます。
(※複数のパターンで実験してみての印象ですので
『ループ開始』地点が記録されていると断定はできません)
ただし、『回数付ループ』の場合は
『ループ開始へ戻る』コマンドが実行されたあとに
指定回数ループしたかどうかの判定が実行されます。
もしループが完了していた場合は
『ループ開始へ戻る』コマンドの位置から
『ループ中断』コマンドが実行されます。
よって『ループ開始へ戻る』~『ループここまで』間の
処理行数が多いほど、ループを抜けるときに処理負荷が
高まってしまいます。
-- ▼処理負荷比較 --
[ 余談(興味ない人はスルーでOK) ]
『ループ中断』コマンドが実行されると
現在のループ処理に対応する『ループここまで』コマンドを
探索します。
ここで言う対応する『ループここまで』コマンドというのは
『ループ開始』コマンドのインデントと
同じインデントに存在する『ループここまで』コマンドです。
インデントというのは以下のイベントコードで言う
<0>や<1>の数値のところです。
▼イベントコード
[170][0,0]<0>()() が 『ループ開始』コマンド
[498][0,0]<0>()() が 『ループここまで』コマンド
インデントの部分を見ると同じ 0 がセットされています。
ここが一致する『ループここまで』を探索します。
つまりイベントコードを弄って本来は違うインデントのところで
対応した『ループここまで』コマンドを置くと
そこをループ終了地点と誤認させることができます。
<< ループ内の行数 >>
ループ処理を抜ける場合は
『ループここまで』コマンドまでの行数に応じて
処理負荷が変化します。
ループを抜けると言いましたが、ループを実行しない場合にも
行数が影響します。
-- ▼処理負荷比較 --
上記画像の結果のようにループ内の行数が多いほど
処理負荷がかかるみたいです。
行数が多いほど負荷が上がる原因は
ループを終了するときに『ループここまで』コマンドを
探索しているためだと思われます。
<< ループ中断 >>
『ループ中断』コマンドが実行されると
『ループ中断』コマンドの位置から下方向に
『ループここまで』コマンドを探索します。
ループを抜けるときにループ内の行数に応じて
負荷が変わったように
『ループ中断』~『ループここまで』間にある
処理行数に応じて負荷が変わります。
-- ▼処理負荷比較 --
<< ループ開始へ戻る >>
『ループ開始へ戻る』コマンドが実行されると
『ループ開始』地点へ戻ります。
このとき『ループ開始』地点は予め記録されており
『ループ開始』地点へ戻るときの処理負荷は一定だと
思われます。
(※複数のパターンで実験してみての印象ですので
『ループ開始』地点が記録されていると断定はできません)
ただし、『回数付ループ』の場合は
『ループ開始へ戻る』コマンドが実行されたあとに
指定回数ループしたかどうかの判定が実行されます。
もしループが完了していた場合は
『ループ開始へ戻る』コマンドの位置から
『ループ中断』コマンドが実行されます。
よって『ループ開始へ戻る』~『ループここまで』間の
処理行数が多いほど、ループを抜けるときに処理負荷が
高まってしまいます。
-- ▼処理負荷比較 --
[ 余談(興味ない人はスルーでOK) ]
『ループ中断』コマンドが実行されると
現在のループ処理に対応する『ループここまで』コマンドを
探索します。
ここで言う対応する『ループここまで』コマンドというのは
『ループ開始』コマンドのインデントと
同じインデントに存在する『ループここまで』コマンドです。
インデントというのは以下のイベントコードで言う
<0>や<1>の数値のところです。
▼イベントコード
WoditorEvCOMMAND_START
[170][0,0]<0>()()
[0][0,0]<1>()()
[498][0,0]<0>()()
WoditorEvCOMMAND_END
この場合[170][0,0]<0>()() が 『ループ開始』コマンド
[498][0,0]<0>()() が 『ループここまで』コマンド
インデントの部分を見ると同じ 0 がセットされています。
ここが一致する『ループここまで』を探索します。
つまりイベントコードを弄って本来は違うインデントのところで
対応した『ループここまで』コマンドを置くと
そこをループ終了地点と誤認させることができます。
PR
COMMENT
■ Woditoride - April Fool's Day Edition
┗最新版公開日 : 2018/04/01
■ WoditorOptimizer - Ver2.0.1
┗最新版公開日 : 2017/08/31
■ WoditorOptimizer - Ver1.00 -
┗旧バージョン : 2015/04/18
■ WECDeletor - Ver1.01 -
┗最新版公開日 : 2012/11/03
HN:
K-Shin07
性別:
男性
趣味:
ゲーム製作
自己紹介:
趣味でゲームを作っています
プログラマーです
開発ツール・使用言語等
・WOLF RPG エディター
・HSP
・C
・VB
・Java
・C++
・C++/CLI
・C#
・アセンブラ
・Haskell
・PHP
・Ruby
・WPF
・DirectX( 9.0c )
・PhysX( 3.X系 )
Mail
k07.alpha.stella[あっとマーク]gmail.com
プログラマーです
開発ツール・使用言語等
・WOLF RPG エディター
・HSP
・C
・VB
・Java
・C++
・C++/CLI
・C#
・アセンブラ
・Haskell
・PHP
・Ruby
・WPF
・DirectX( 9.0c )
・PhysX( 3.X系 )
k07.alpha.stella[あっとマーク]gmail.com
(2018/08/07)
(2018/07/21)
(2018/04/01)
(2017/08/27)
(2016/10/16)
(2016/10/14)