C++ Overhead gegenüber C



  • nein, die kann man nicht zusammenzählen. "real" ist die Zeit aus der realen Welt, "sys" und "user" die im Kernel bzw. Userspace verbrachte Prozessorzeit. Die Messungen sind in der Größenordnung aber bullshit, wenn C für das eine write() 4ms braucht, braucht C++ die auch.



  • @Daniel E.

    hmm, mal ein paar tests von mir (ich hab mal dein Programm genommen)

    > uname -a
    Linux debian01 2.4.20 #10 Son Apr 6 12:04:45 CEST 2003 i686 GNU/Linux
    > gcc -v
    [...]
    gcc version 3.2.3 20030415 (Debian prerelease)
    > gcc -O3 -o demo_cc demo.cc
    > g++ -O3 -o demo_++ demo.cc
    > gcc -O3 -o demo_c demo.c
    > ls -lh demo_c demo_cc demo_++
    -rwxr-xr-x    1 ki     us         5,0K 2003-07-14 20:18 demo_++
    -rwxr-xr-x    1 ki     us         4,9K 2003-07-14 20:18 demo_c
    -rwxr-xr-x    1 ki     us         4,9K 2003-07-14 20:17 demo_cc
    > time ./demo_++
    Usage: ./demo_++ <iface>
    
    real    0m0.008s
    user    0m0.010s
    sys     0m0.000s
    > time ./demo_cc
    Usage: ./demo_cc <iface>
    
    real    0m0.002s
    user    0m0.000s
    sys     0m0.000s
    > time ./demo_c 
    Usage: ./demo_c <iface>
    
    real    0m0.003s
    user    0m0.000s
    sys     0m0.000s
    

    Wie es aussieht ist die C++ Stdlib das Problem (bei der GCC). (Der Zeitunterschied zwischen demo_c und demo_cc ist innerhalb der Messtolleranz)



  • Warum testet ihr COMPILER? Ich hab gedacht es geht um C und C++... irgendwie unsinnig, da man unter VC++ nur EINEN Compiler sowohl für C als auch C++ habe.

    Daniel! Du testest GCC und GPP (oder wie sich der C++-GNU schimpft)... also hast du hier zwei völlig verschiedene Compiler-Implementierungen getestet, und nicht zwei Sprachen. Sorry, das ist Unfug!



  • Artchi schrieb:

    Warum testet ihr COMPILER? Ich hab gedacht es geht um C und C++... irgendwie unsinnig, da man unter VC++ nur EINEN Compiler sowohl für C als auch C++ habe.

    Hast Du ganz, ganz fein beobachtet, aber keiner außer dir kann in den Sprachbeschreibungen die Seite finden, wo draufsteht, wie lange so Dinger zum ausführen dauern. Darum vergleichen wir einfach mal mit einer gängigen Implementierung und versuchen herauszufinden, was da alles so abgeht.

    irgendwie unsinnig, da man unter VC++ nur EINEN Compiler sowohl für C als auch C++ habe.

    Das ist vielleicht ein Programm, trotzdem sind es 2 Compiler (also Compiler für zwei grundauf verschiedene Sprachen). Ein C-Programm muss kein C++-Programm sein, kann aber.

    Du testest GCC und CPP...

    Jaja. 'cpp' ist (wenn Du nicht das von mir erstellte Binary meinst) ein Präprozessor. Damit tue ich mich schwer, C-Quelltext zu übersetzten.

    Sorry, aber Unfug!

    Ja, das ist eine schöne Zusammenfassung deines Artikels.

    An all die anderen: Danke für eure Mitmessungen (insbesondere kingruedi mit dem Hinweis auf die Bibliothek). -- Und ja, der 'time'-Benchmark ist für diese Ausgabe absolut sinnfrei.



  • archi...wie willst du die sprache sonst testen? es hängt doch alles an der jeweiligen implementation...und die verkörpert nun mal der compiler...oder willst du die grammatik der sprache testen...

    ne ne...aber um nen ordentlichen benchmark zu machen müssten ein paar grundvorraussetzungen gegeben sein 🙂


Anmelden zum Antworten