Useless Card Constant Experiment#
I remembered someone saying that the ternary operator is slower than if-else
,
and someone else said that adding inline
actually makes it slower.
So, let's do an experiment.
(I'm embarrassed to even put up such a stupid experiment)
Preparation#
-
"Functions" written in three ways. Because I'm too lazy, I used the simplest
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)); }
The last two were tested with and without
inline
-
Main program
Using
rand()
withoutsrand()
to generate data, so it's not only randomly distributed, but the total data is the sameint main (void) { for (int i = 1; i <= 100000000; ++i) { int x = rand(), y = rand(); int z = max(x, y); } return 0; }
-
Calculator
utools is really useful
Process#
Following the principles of scientific experiments, each test was done five times, and the average value was taken.
Results#
From top to bottom: define
, if without inline
, if with inline
, ternary without inline
, ternary with inline
Conclusion#
define
is very fast, use it as much as possible.
The ternary operator is faster than if-else
.
inline
is faster than without inline
.
。。。。。。。。。。。。
It seems like there isn't much difference