环境: WIN10+ vs2015
突发奇想,if-else和三目运算法的效率到底相差多少呢?
下面是简单的测试代码:
int a = 1;
int b = 2;
int c = 0;
clock_t c1 = clock();
for (size_t i = 0; i < 100000; i++)
{
for (size_t i = 0; i < 10000; i++)
{
if (a> b)
{
c = a;
}
else
{
c = b;
}
}
}
clock_t c2 = clock();
for (size_t i = 0; i < 100000; i++)
{
for (size_t i = 0; i < 10000; i++)
{
a > b ? c = a : c = b;
}
}
clock_t c3 = clock();
cout << c2 - c1 << endl;
cout << c3 - c2 << endl;
根据最后的打印输出时间,
第一次: 2317 / 2286
第二次: 2307 / 2303
第三次: 2303 / 2295
…
发现三目运算符的性能略胜一小筹.
个人认为在性能相差不大的情况下,还是可以考虑使用if-else提高代码的可读性.方便几周之后的自己,方便后来者维护.