Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » char=ein buchstabe?

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 ] [ 2 ] [ 3 ] [ 4 ] > 5 < [ 6 ]
040
26.07.2003, 16:58 Uhr
0xdeadbeef
Gott
(Operator)


Ich habs grad mal getestet. Das C-Programm sieht so aus:

C++:
main(){
    int i;
    for(i = 0; i < 1000000; ++i)
        printf("Hello, World!\n");
}


Das C++-Programm so:

C++:
#include <iostream>
int main(){
    for(int i = 0; i < 1000000; ++i)
        std::cout << "Hello, World!" << std::endl;
}


Beide mit gcc -O3 -march=athlon kompiliert, danach per time die Laufzeit gemessen. Das Ergebnis:

C-Programm:
real 2m16.644s
user 0m0.770s
sys 0m1.510s

C++-Programm:
real 2m18.075s
user 0m8.680s
sys 0m1.290s

Ich finde den Unterschied wirklich nicht so gravierend.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
041
26.07.2003, 17:02 Uhr
Spacelord
Hoffnungsloser Fall


1 Milliarde mal!
Ich guck jetzt erstmal Voyager und dann schau ich selber mal wie der Unterschied zu Turbo Pascal ist!

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
042
26.07.2003, 17:14 Uhr
0xdeadbeef
Gott
(Operator)


Dir ist schon klar, dass der dann 1000 mal solange, also über den Daumen 36 Stunden pro Programm rechnen muss, oder? Zumindest mein Rechner, vielleicht schafft es deiner ja in 24 Stunden oder so.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
043
26.07.2003, 17:43 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


zählt ja eigentlich auch nur der prozentuale unterschied und der ist verschwindend gering.
Mag ja sein das ein programm unter umständen sogar nen Tag länger braucht als das andere. Wenn der sowieso 1000 Jahre gerechnet hat spielt der eine Tag auch keine rolle mehr.

Gruss Heiko
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
044
27.07.2003, 16:35 Uhr
Spacelord
Hoffnungsloser Fall


o.k ,
hab also heute mal den Unterschied zu Turbo Pascal angetestet.
BRUTAL!!
Der C++ Code:

C++:
#include <iostream>

int main()
{
    long i;

    for(i=0;i<=1000000;i++)
        std::cout << "Hello, World! "<<i << std::endl;

    return 0;
}



Kompiliert mit VC++ im Releasemode.Groesse 121 KB
Ausführungszeit 8Min 58Sek

Der TP Code:

C++:
program HelloWorld(output);

var
  i :Longint;

begin
  for i:=0 to 1000000 do
    writeln('Hello World! ',i);
end.


Kompiliert mit TP 5.5. Groesse 2,26KB
Ausführungszeit 1Min 26 Sek!!

Ich kann dir gerne die Exe schicken,dann kannst du ja mal versuchen dein C++ Programm soweit zu optimieren dass es auch nur annähernd in diese Region kommt!??

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
045
27.07.2003, 16:54 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich habe keine Pascalcompiler installiert, daher nehme ich mal das C++ von Spacelord als Referenz und sage mal großzügig: Psacl sit im den Faktor 8 schneller als das C++ teil. Das macht bei mir:

C++:
time a.out >/dev/null

real    0m14.997s
user    0m14.170s
sys     0m0.250s


(Habe die Ausgabe direkt umgeleitet, weil ich ka nicht die Geschwindigkeit des X Servers messen will, sondern die geschwindigkeit, wie schnell das Ding Den String generiert und in den Ausgabekanal pumpt.)
Wie schon mehrfach erwähnt sollte man C++ Streams nicht benutzen, wenn man nun wirklich auf Performance schaut. Folgendes simples C++ Programm läßt den pascal locker hinter sich:

C++:
#include <stdio.h>

int main()
{
    char buf[100];
    for(int i=0;i<=1000000;i++)
    {
        printf(buf, "Hallo, World %d\n", i);
    }
    return 0;
}


macht:

C++:
joe@ebola:~/tmp> time a.out >/dev/null

real    0m1.412s
user    0m1.350s
sys     0m0.010s


schätzungsweise ist das um den Faktor 10.5 schneller als der Schlechte C++ Code von davor (ganz ohne jede Optimierung).
Und selbst wenn es Dich in Richtig C++ Streams ziehen sollte, dann hast Du da auch noch optimierungspotential:
1. Vermeide std::endl, weil das immer ein flush macht. Nimm stattdessen '\n'
2. Vermeide den op<<, n8imm stattdessen write/put.
Ich habe das jetzt nich nachgemessen, sollte aber ähnlich langsame Resultate wie Pascal liefern. Wenn es um Performance geht, würde ich also sagen.
1. C
2. C++
3. Pascal
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)

Dieser Post wurde am 27.07.2003 um 16:55 Uhr von virtual editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
046
27.07.2003, 16:54 Uhr
0xdeadbeef
Gott
(Operator)


Ich kann mit EXEs nichts anfangen. Aber vielleicht kannst du mir ja sagen, wo ich einen Kernel-Patch finde, mit dem ich dieses Format ausführen kann...

Naja, und was das selbstkompilieren angeht - im Debian-Tree sind nur gpc-binaries version 2.95, und ich hab g++ und gcc als 3.3 da, die deutlich besser optimieren. Der Test wäre deswegen unfair.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 27.07.2003 um 17:01 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
047
27.07.2003, 17:00 Uhr
Spacelord
Hoffnungsloser Fall


Ich hab den C++ Code nahezu unverändert von Deadbeef übernommen!
Im Grunde vertreten wir den gleichen Standpunkt.
Wenn man keine Streams verwendet ist der OOP Anteil von C++ doch für den Arsch,oder?
Werde deinen Code mal antesten,aber jetzt muss ich erstmal wieder Voyager gucken .

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
048
27.07.2003, 17:17 Uhr
virtual
Sexiest Bit alive
(Operator)


@Spacelord
Ja, kann sein daß wir da den gleichen Standpunkt haben. Die Nachteile der C++ Streams hinsichtlich der Performance liegen auf der Hand (spätestens dann, wenn man sich mal mit der dahinterliegenden Archtiektur+Implementierung auseinandergesetzt hat). Die Vorteile liegen jedoch auch auch auf der Hand: man kann eigene Klassen nahtlos mit den Streams verbinden, problemlos eigene Streams schreiben usw.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
049
27.07.2003, 17:37 Uhr
Spacelord
Hoffnungsloser Fall


Naja,
unterm Strich bleibt,wenn man C++ nutzt wie es gedacht ist bleibt es Performancemässig hinter TP.Warum Deadbeef sein C Programm nur unwesentlich schneller war als das C++ Pendant kann ich nicht so ganz nachvollziehen .
Ist ja eigentlich auch egal!
C++ ist ne gute Sprache die ihre Vorteile hat!!
Dieser Thread ist mittlerweile soweit weg von der Anfangsfrage dass man die unendliche Geschichte mal einbremsen muss .

MfG Spacelord
--
.....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] [ 3 ] [ 4 ] > 5 < [ 6 ]     [ 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: