Der Vorteil des Kompilierens auf der eigenen Maschine

  • Genauso hab ich auch gemacht...es bleibt bei 23s.

    Cool n Quiet hab ich eben abgeschaltet (war auf Automatik), aber auch keine Änderung.
    Habe auch bei Compiler-Optionen diverse Instruktionen (x386 etc) und Built-in Funktionen (MMX..SSE..etc) durch...keine Änderung :bonk: .

    Vielleicht nimmt der Phenom die Aufgabenteilung an 4 CPU´s viel zu langsam vor...(CPU Thread auf allen 4 Kerne ausgeglichen bei 25-30%).
    Wie bringe ich ihn auf 100% Auslastung mit nur einem simplen Programm.

    Ich nutze Vista Business 32bit...

    Liebe Grüße, 3dfxbaron

    Was hat ein Informatiker in einem Gartenmarkt zu suchen ?
    Er sucht Binärbäume... :topmodel:

    Es gibt 10 verschiedene Menschen auf der Welt, die die Binär denken und die nicht!

  • Das Programm nutzt nur einen Kern. Alle anderen liegen brach.
    Der Unterschied, ob das Programm auf mehrere Cores verteilt wird oder nur auf einem läuft, ist minimal. Bei meinem Athlon 64 X2 4200+ @ 2500 MHz und 1.200.000 Ausgaben von "Hallo Welt" beträgt der Unterschied ne gute Sekunde ( 36,2s zu 34,7s ).

    Übrigens: Wenn man bei 1.200.000 Ausgaben die Zählvariable "i" als Fließkommazahl deklariert, ist das Programm geringfügig schneller als mit der stinknormalen Ganzzahl (Integer), dafür aber bei geringer Anzahl von Ausgaben langsamer...

    Laufzeit auf meinem System: 27,187 Sekunden

    "Du bist und bleibst a Mensch und du kannst eben net deine menschlichkeit überwinden."

    Dennis_50300

    2 Mal editiert, zuletzt von CryptonNite (14. März 2009 um 18:33)

  • Hm, wenn das Programm nur einen Kern nutzt, wieso sehe ich dann bei dem CPU-Thread (Strg-Alt-Entf) in allen 4 Cpu-Fenstern ungefähr gleiche Auslastungsgraphen auf 25-30%.

    Mit float habe ich auch versucht, macht bei mir kaum unterschied (22,5s).

    Ich frage mich, woran das liegen könnte...warum die Ergebnisse so extrem auseinandergehen -> i7 mit 0.09s und bei Phenom 9550 23s...
    Das Programm muss durch irgendwas gebremst werden...aber was :bonk: ?? Softwaremodus? :pinch:

    Liebe Grüße, 3dfxbaron

    Was hat ein Informatiker in einem Gartenmarkt zu suchen ?
    Er sucht Binärbäume... :topmodel:

    Es gibt 10 verschiedene Menschen auf der Welt, die die Binär denken und die nicht!

  • Lass das Programm mal versuchsweise unter Windows XP laufen, wenn möglich. Ich habe die Vermutung, daß Vista das Programm irgendwie bremst.
    Daß der Graph des Taskmanagers bei allen Kernen eine Auslastung von rund 30 bis 40% anzeigt ist normal. Windows lässt normalerweise ein Programm auf allen vorhandenen Prozessoren laufen. Die Last teilt sich auf die vorhandenen CPU's auf. Wenn du dem Programm explizit eine CPU zuweist, ändert sich an der Leistung wenig bis nichts. Wenn das Programm mehrere CPU's unterstützen sollte, müsster der Quellcode deutlich anders und vorallem komplexer sein. Der Compiler kann da auch nicht helfen. Multi-CPU muß das Prgramm an sich unterstützen, nicht der Compiler.

    "Du bist und bleibst a Mensch und du kannst eben net deine menschlichkeit überwinden."

    Dennis_50300

    2 Mal editiert, zuletzt von CryptonNite (5. April 2009 um 13:21)

  • Gut, werd ich ma machen. Wenn ich Zeit hab (voraussichtlich Sonntag nächste Woche), werd ich dann unter Linux testen.
    Ich werd dann informieren, ob sich was geändert hat. Danke fürs Rat und Tipps !!! :thumbup:

    Liebe Grüße, 3dfxbaron

    Was hat ein Informatiker in einem Gartenmarkt zu suchen ?
    Er sucht Binärbäume... :topmodel:

    Es gibt 10 verschiedene Menschen auf der Welt, die die Binär denken und die nicht!

  • Unter Linux funzt der Code auch, leider wird aber nur die benötigte Zeit für eine Schleife angezeigt, nicht für das gesamte Programm. Liegt wahrscheinlich an einem Unterschied der time.h. Ich werd's mal nächste Woche noch fixen.

    "Du bist und bleibst a Mensch und du kannst eben net deine menschlichkeit überwinden."

    Dennis_50300

  • Ich habe mal ein wenig im Thread gelesen:

    - Es ist möglich verschiedene Codepfade für verschiedene CPUs bzw. Optimierungen in eine exe zu packen.
    siehe z.B. http://en.wikipedia.org/wiki/Intel_C%2B%2B_Compiler unter Criticism
    auch sehr schoen mit Beispielen https://www.voodooalert.de/www.agner.org/…imizing_cpp.pdf
    (Kapitel Make critical code in multiple versions for different CPUs)
    Die Beispiele zeigen, wie man die "flaws" des Intel compilers umgeht, oder man nimmt halt gcc.

    - Die Schleife aus dem Beispielprogramm kann man sehr einfach mit OpenMP parallelisieren.