inline関数などの評価
C++を最近勉強しているのですが、inline関数って本当に早いのか実験してみました。
環境
- ubuntu 14.04.3 LTS
- g++
- 仮想化環境
- i7 2600k
- 24GB
正直こういう検証には適さない環境ですが許してください。
コード
cpp_test/inline at master · h-otter/cpp_test · GitHub
検証だけしたかったのでコピペの嵐です。(言い訳)もしコードをスマートにする方法があれば教えてください。
結果
TEST; InlineFunction() duration = 0.870657sec. TEST; StaticFunction() duration = 0.834252sec. TEST; ConstFunction() duration = 0.94697sec. TEST; DefaultFunction() duration = 0.829023sec. TEST; InlineFunction(long long int) duration = 0.981507sec. TEST; StaticFunction(long long int) duration = 1.00625sec. TEST; ConstFunction(long long int) duration = 1.01302sec. TEST; DefaultFunction(long long int) duration = 1.00517sec.
考察
- 引数がなければinlineはむしろ遅い
- 引数が多ければ多いほどinlineのほうが早い(理論的には納得)
- 実はconstが一番遅い
- staticと普通の関数に大きな変化はない
検証しているものが少ないですが、大体こんな感じにまとめられると思います。しかし、inlineを使うのは速度じゃなくてメモリのオーバーヘッドを減らすことが主な目的だと思うのでこの結果を鵜呑みにする必要はないですね。