[CHP] 実験2:サブルーチン呼び出しのペナルティ ― 2006-08-07
サブルーチン呼び出しが性能に与える影響を調べてみました.
使用機体
第2章から使えるマリアエレナ
計測プログラム
メイン
- 100秒以上なら外周へ
- SUB1
- SUB1※
※の矢印は1.を指す.
SUB1
- カウンタAに+1※
※の矢印は外周を指す
100秒経過後のカウンタAの値を計測する
結果
- サブルーチン呼び出し:1500
結論
サブルーチン呼び出しは性能に与える影響が大きい.
考察
当初はサブルーチン呼び出しチップも1チップとしてカウントされ,
150[チップ/sec] x 100[sec] x 2 / 5 = 6000
となることを予想しましたが,それを大きく下回る結果となりました.結果から計算すると,1ループあたりのチップ数は実に20にもなります.条件判断とカウンタ加算x2をのぞくと17となり,1つのサブルーチン呼び出しチップは8.5チップ相当となります.
この大きなペナルティが処理がサブルーチンに移る際に起るのか,サブルーチンからメインに戻る際に起るのか,あるいはその両方に分配されているのか気になるところです.しかし,調べ方がちょっと思いつきません.
もし,サブルーチンに処理が移る際にペナルティが起るのならば,反応速度が特に重要になる回避処理や格闘処理をサブルーチンに書くと不利になる恐れがあります.
コメント
トラックバック
このエントリのトラックバックURL: http://hiroro.asablo.jp/blog/2006/08/07/476192/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。