Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Compileroptimierung mit Bit-Stifts

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
08.02.2010, 18:24 Uhr
Prog



Ich weiß, ich bin im falschen Forum, sorry! aber ich hab kein passenderes gefunden (ggf. bitte verschieben!)

Hab grade mal mit meinem g++-4.4.3 folgenden Code übersetzt (Optimierung mit -O3 oder -O4):


C++:
#include <iostream>
#include <boost/timer.hpp>

int main(){
    int x, y, z;
    std::cin >> x >> y >> z;

    boost::timer timer;
    for(unsigned int i=0; i<4000000000; ++i){
        x=z*2;
        y=x*4;
        z=(x+y)/8;
    }
    std::cout << timer.elapsed() << std::endl;
}



Das liefert ungefähr 11.3 Sekunden. Wenn ich den Schleiferumpf nun durch folgendes ersetze, dauert das ganze nur noch 6.5 Sekunden:


C++:
x=z<<1;
y=x<<2;
z=(x+y)>>3;



Warum führt mein Compiler eine solch einfache und offensichtliche Optimierung nicht durch? Gilt das Verhalten auch für andere Compiler?

Gruß prog
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
08.02.2010, 18:50 Uhr
0xdeadbeef
Gott
(Operator)


Die Ausdrücke sind nicht äquivalent (Überlauf).
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
08.02.2010, 19:05 Uhr
Prog



Womit wiedereinmal bewiesen währe das ich ein Depp bin. Danke dir ;-)

Mit unsignet int klappt das ganze dann prima!

Dieser Post wurde am 08.02.2010 um 19:08 Uhr von Prog editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: