連載:効率的なコードを書く(7)関数呼び出しを減らす--いつも私を邪魔しないでください



関数は構造化プログラム設計の生成物であり、コードをよりモジュール化し、結合性をより低くし、再利用性をより高くする.ただし、関数呼び出しは追加のオーバーヘッドをもたらし、ジャンプを引き起こすだけでなく、追加の命令も発生します.
人はすべてこのような経験があって、1件の事をする時、もし人に中断されて、再び帰ってこの事をするならば、1段の回復の時間が必要で、いつも中断されて、あの事はすることができません.関数呼び出しもそうですが、パラメータスタックアウト、レジスタ保存、命令ジャンプなどを行います.複数のステッププログラムのパフォーマンス要件が高い場合は、いくつかの小さな関数を直接コードに変換できます.
1.小関数を直接文に書く
次の最小値を求める関数は、関数呼び出しを直接関数の内容で置き換えることができます. 
int min(int a, int b)

{

   return  a<b? a: b;

}

c = min(a, b);

//    

c = a<b? a: b;

 
2.小関数をマクロと書く
呼び出す場所が多い場合は、関数呼び出しでコードが簡潔に見えます.コードを簡潔に保ち、関数呼び出しを減らす方法の1つは、関数体をマクロとして宣言することです. 
#define min(a,b) ((a)<(b)) ? (a) : (b)

c = min(a,b);

 
3.関数をインライン関数として宣言
マクロに変更する方法が面倒であれば、関数をinlineと宣言すると、コンパイラが関数呼び出しを自動的に関数体で上書きする簡単な方法もあります. 
inline int min(int a, int b)

{

   return  a<b? a: b;

}

c = min(a, b);

//          

c = a<b? a: b;

        
本文は『大話プロセッサ』第6章から抜粋した.
1台のコンピュータが本当に優れているためには、ハードウェアとソフトウェアが緊密に結びついていなければなりません.ジョブズ
作者微博:weibo.com/muxiqingyang