自己書き換えコード
最近のプロセッサでは自己書き換えコードは実行速度が遅くなる。 実行コードを書き換えると、命令キャッシュに保持していた筈の命令が使えなくなるので、メモリからキャッシュにロードし直さなければならなくなり、遅くなるのである。
つまり自己書き換えコードで性能改善が図れるのは、書き換えがごくまれにしか発生しない、ループ内のスイッチ切り替え(前述の状態依存ループ)のような場合だけである。 コード書き換えは一瞬で終わるわけではないから、これは何も命令キャッシュに限った問題ではない。
最近のプロセッサは命令を実行前に内部に取り込むので、プログラムカウンタに近い箇所を書き換えるとプロセッサがそれに気づかない可能性があり、書き換え前のコードを実行してしまうことがある。これについては命令プリフェッチキューを参照されたい。