ho tradotto il codice here in C++ come segueprestazioni di size_t in 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;
}
Con la bandiera -O3 sul compilatore g ++ 4.8.1 su Mac OSX 10.8.4, avrò tempo 0.568s tempo all'utente.
Ora se cambio il contatore i in Linea 1 in funzione è_evenibilmente_divisibile in size_t, il tempo improvvisamente salta a 1,588 s. Questo persiste anche se cambio tutte le variabili in size_t, il tempo sale a 1.646s
Cosa sta succedendo? Non dovrebbe size_t aumentare le prestazioni piuttosto che diminuirle in quanto è un tipo più specifico di int?
'int' è" la dimensione naturale "per l'hardware. –
Tiene questo su un sistema a 64 bit? int è 4 byte ... – Opt