Tiết lộ đầy đủ - Tôi được lấy cảm hứng từ Is x += a quicker than x = x + a?Là + = nhanh hơn - =?
Điều đó sang một bên, tôi quyết định thử nghiệm +=
và -=
. Các xét nghiệm đơn giản cho thấy chúng giống nhau. Sau đó, tôi đã cố gắng một cái gì đó tương tự như:
std::vector<int> x;
for (int i = 0 ; i < 10000 ; i++)
x.push_back(rand()%10);
và gọi +=
và -=
tương ứng với một số lượng nhất định:
long long sum = 0;
for (each number in the array)
if (x[j] < k)
sum += x[j];
else
sum -= x[j];
như vậy, nếu k
là, nói, nhỏ, -=
sẽ được gọi là thường xuyên hơn (duuuh). Tôi đã thử với số k = 2
sẽ cung cấp tỷ lệ cao hơn là -=
và với k = 5
, số này sẽ mang lại cùng số lượng -=
và +=
.
Đường viền: gọi số -=
nhanh hơn gấp đôi số gọi +=
. Tại sao nó sẽ hiệu quả hơn trong trường hợp này?
Tôi nghĩ có những điều tốt hơn để được "truyền cảm hứng". – Mysticial
Có lẽ chỉ là một lợi thế nhỏ cho A + B, xem xét A - B chỉ là A + (-B) – nullpotent
Hai từ: dự đoán nhánh. Gợi ý: Hãy thử k = 8 –