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
ここでインライン化した場合が関数化しない場合を超えるという形となり、これくらいの規模になると、インライン化の恩恵が具体的に
見えてくるのではないかと考える。