C++には、関数の呼び出しによる処理の負荷を減らすための「インライン関数(inline function)」という仕組みがあります。通常、関数を呼び出すとスタックの操作などが発生しますが、インライン関数を使うと処理が展開され、関数呼び出しのオーバーヘッドを削減できます。
本記事では、インライン関数を使って2つの整数の最大値を求める処理を例に、その基本的な使い方と注意点を丁寧に解説いたします。
目次
サンプルコード:インライン関数で最大値を求める
#include <iostream>
using namespace std;
// インライン関数 getMax の定義(2つの整数を比較して大きい方を返す)
inline int getMax(int a, int b)
{
if (a > b)
return a;
else
return b;
}
int main()
{
int value1, value2, maxResult;
cout << "1つ目の数値を入力してください。" << endl;
cin >> value1;
cout << "2つ目の数値を入力してください。" << endl;
cin >> value2;
maxResult = getMax(value1, value2);
cout << "最大値は " << maxResult << " です。" << endl;
return 0;
}
実行例
1つ目の数値を入力してください。
42
2つ目の数値を入力してください。
67
最大値は 67 です。
インライン関数とは何か?
インライン関数とは、関数の定義に inline
キーワードをつけた関数のことで、関数の本体が呼び出し元に展開(展開=コピー)されることで、処理効率を高める仕組みです。
通常の関数呼び出しとの違い
比較項目 | 通常の関数 | インライン関数 |
---|---|---|
処理内容 | 呼び出し→ジャンプ→戻り | 本体を展開(ジャンプしない) |
実行速度 | やや遅くなることがある | 呼び出しオーバーヘッドを減らせる |
バイナリサイズ | 小さい(関数は1つ) | 大きくなる可能性あり(展開される) |
インライン関数の使い方
inline 戻り値の型 関数名(引数)
{
// 処理内容
}
本記事のコードでは、getMax(int a, int b)
がインライン関数として定義されており、main()
関数内で最大値を取得するために使用されています。
インライン関数を使うべき場面と注意点
向いている場面
- 非常に短くて単純な関数(例:1行〜3行程度)
- 頻繁に呼び出される関数
- 呼び出しオーバーヘッドが性能に影響するようなケース
注意点
- インライン関数は**あくまで「コンパイラへの要請」**であり、必ず展開されるとは限りません。
- 関数本体が大きすぎる場合、かえってコードサイズが膨らむため逆効果です。
- デバッグがしづらくなることもあります。
まとめ
- インライン関数は、
inline
キーワードを使って定義し、関数呼び出しの効率化を目指す仕組みです。 - 条件分岐などの処理が短い関数であれば、関数展開により実行速度が改善される可能性があります。
- ただし、使いどころを見極めないと、コードサイズや可読性に悪影響を与えることもあるため注意が必要です。
小さな最適化の一歩として、インライン関数の基本をぜひ理解しておきましょう。