アセンブリで次のコードスニペットのパフォーマンスを向上させるにはどうすればよいですか?私はこれをするためにどのような方法を提案してください? (私はそれはあなたが欲しいものではありません怖いが)最終的には実際にこのコードスニペットのパフォーマンスをアセンブリごとに向上させるにはどうすればよいですか?
void changeDirection(char key) {
/*
W
A + D
S
*/
switch (key) {
case 'w':
if (direction != 2) direction = 0;
break;
case 'd':
if (direction != 3) direction = 1;
break;
case 's':
if (direction != 4) direction = 2;
break;
case 'a':
if (direction != 5) direction = 3;
break;
}
}/******increase performance*****/
おかげ
私はかなり保証は現代の任意のコンパイラは、より速いアセンブリにそれを向けるだろうことができます大部分の開発者は手作業で生産することができます:-) – paxdiablo
これは確かにこれはゲームのティックごとに1回しか実行されません。 – harold
周囲の文脈なしで言うことは不可能です。 ASCII桁を数値にマッピングするための最適なasmを生成することは、数値に基づいて何か条件付きで実行する他のコードにインライン展開すると有効ではありません。うまくいけば、 'direction'は' static'なので、コンパイラはこの関数をインライン展開するときにコンパイラがより簡単にレジスタに最適化することができます。 –