Warum wird der Code nicht optimiert?
-
Aber ein guter Compiler kann das:
// Ursprungscode (platzsparend formatiert) string s = "Hello World!"; unsigned __int64 sum = 0; for(int i = 0; i < 1000000000; ++i) for(int j = 0; j < s.length(); ++j) sum += s.length(); // loop interchange for(int j = 0; j < s.length(); ++j) for(int i = 0; i < 1000000000; ++i) sum += s.length(); // Die 1000000000 Additionen in eine Multiplikation for(int j = 0; j < s.length(); ++j) sum += s.length()*1000000000; // Die s.length() Additionen in eine Multiplikation unsigned __int64 sum = 0; sum += s.length()*s.length()*1000000000; // =0 ist unnötig string s = "Hello World!"; unsigned __int64 sum = s.length()*s.length()*1000000000;
-
Letzter Schritt:
// unsigned __int64 sum wird nicht gebraucht; einfach weglassen string s = "Hello World!";