przetłumaczyłem kod here w C++ następującoWydajność size_t w C++
#include <iostream>
using namespace std;
int t = 20;
bool is_evenly_divisible(const int a, const int b) {
for (int i=2; i<=b; ++i) { // Line 1
if (a%i != 0)
return false;
}
return true;
}
void run() {
int i = 10;
while (!is_evenly_divisible(i, t)) {
i += 2;
}
cout << i << endl;
}
int main(int argc, char** argv) {
run();
return 0;
}
z flagą -O3 na kompilator g ++ 4.8.1 na Mac OSX 10.8.4, mam czas 0.568s czas użytkownika.
Teraz, jeśli zmienię licznik i w linii 1 w funkcji is_evenly_divisible na size_t, czas nagle skacze do 1,588s. Ta informacja powtarza się, nawet jeśli zmienię wszystkie zmienne na size_t, czas wzrasta do 1.646s
Co się dzieje? Czy nie powinno się zwiększać wydajności, a nie zmniejszać ją, ponieważ jest to bardziej specyficzny typ niż int?
'int' to" naturalny rozmiar "dla sprzętu. –
Czy to działa w systemie 64-bitowym? int to 4 bajty ... – Opt