完全披露 - 我的灵感来自Is x += a faster than x = x + a?
除此之外,我决定测试+=
vs -=
。简单的测试表明它们大致相同。然后我尝试了类似的东西:
std::vector<int> x;
for (int i = 0 ; i < 10000 ; i++)
x.push_back(rand()%10);
并调用+=
和-=
与给定数字成比例:
long long sum = 0;
for ( each number in the array )
if ( x[j] < k )
sum += x[j];
else
sum -= x[j];
所以,如果k
是,比如说,小,-=
会被更频繁地调用(duuuh)。我试过 with k = 2
which 会给出更高比例的-=
被叫, and with k = 5
,这应该产生大约相同数量的-=
and +=
。
妙语: call-=
比 call 快两倍+=
。为什么在这种情况下它会更有效率?