没卵用のカーネル実験#
誰かが言ったことを思い出した、三項演算子はif-elseより遅いと。
また、inlineを追加すると実際にはもっと遅くなるとも言われています。
それでは、実験をしてみましょう。
(こんなバカな実験を公開するのは恥ずかしい)
準備#
-
3 つの方法で書かれた "関数"。私は非常に初心者なので、最も簡単な
maxを使用しました。#define max(a, b) ((a) > (b) ? (a) : (b))int max (int a, int b) { if (a > b) return a; else return b; }int max (int a, int b) { return ((a) > (b) ? (a) : (b)); }後の 2 つはそれぞれ
inlineありとinlineなしでテストしました。 -
メインプログラム
srand()のないrand()を使用してデータを生成しました。これにより、データはランダムに分布しており、合計のデータも同じです。int main (void) { for (int i = 1; i <= 100000000; ++i) { int x = rand(), y = rand(); int z = max(x, y); } return 0; } -
計算機
utools は本当に便利です
プロセス#
科学的な実験原則に基づき、各テストを 5 回行い、平均値を取りました。
結果#
上から下に順に、define、if-elseなし、if-elseあり、三項演算子なし、三項演算子ありです。

結論#
defineは非常に速く、できるだけ使用してください。
三項演算子はif-elseよりも速いです。
inlineを使用すると、inlineを使用しないよりも速くなります。
。。。。。。。。。。。
あまり大きな違いはないようです