C++ インライン関数

C++の絵本を読んでいてインライン関数の場合の方が

よい場合もあるという記述があるが、具体的なケースの説明が

なかった。

 

とりあえず実験してみるも、単純な10000回のfor文に対して、

それぞれの場合でみてみるも、あまり差はみられず。

 関数化しない場合 0.000056

 関数化した場合  0.000059

 インライン関数化した場合 0.000059

参考;http://www.mm2d.net/c/c-02.shtml

 

確かに早いがこれくらいだとそんなに違いがない。

計算量を比較の軸として考え、10000回ではなく、

O(N),O(logN),O(N~2)でそれぞれ計算してみる。

 

O(N)は上記の結果とする。

O(logN)は上記より差が少なくなる。

O(N^2)(N=100000000の場合)は

 関数化しない場合 0.275509

 関数化した場合  0.281236

 インライン関数化した場合 0.277868

となり、この程度の計算量の違いでも極端な違いは出ない。

 

■呼び出しの回数を3倍とした場合

O(N^2)(N=100000000の場合)

 関数化しない場合 0.839748

 関数化した場合  0.850773

 インライン関数化した場合 0.831881

 

ここでインライン化した場合が関数化しない場合を超えるという形となり、これくらいの規模になると、インライン化の恩恵が具体的に

見えてくるのではないかと考える。