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!";
    

Anmelden zum Antworten