Wieviel klassen haben große Projekte?
-
Original erstellt von <Günter>:
Hallo!
was denkt ihr, wieviele klassen z.B. windows ... hat?
...Naja, ich würd sagen, dass Windows direkt keine einzige Klasse hat, da es meines Wissens nach komplett in C geschrieben wurde!
-
UT 2003 hat ca. eigene 150 Klassen + fremde 3D Engine
-
So! jetzt bin ich vorerst wieder nicht mehr überzeugt. Code :
#include <iostream> #include <stdlib.h> #include <ctime> class TestClass { private : int a; int b; public : TestClass() :a(5),b(0) { } void doSomething () { b+=a; } int getResult () const { return b; } }; int doSomething () { return 5; } int main(int argc, char *argv[]) { const int end = 50000; int b=0; int i,j; int a = 5; time_t time; TestClass testClass = TestClass(); time = clock(); for (i = 0 ; i < end ; ++i) { for (j = 0 ; j < end ; ++j) { testClass.doSomething(); } } b=testClass.getResult(); std::cout << clock() - time << "ms" << std::endl; std::cout << b << std::endl; b=0; time = clock(); for (i = 0 ; i < end ; ++i) { for (j = 0 ; j < end ; ++j) { b+=doSomething(); } } std::cout << clock() - time << "ms" << std::endl; std::cout << b << std::endl; b=0; time = clock(); for (i = 0 ; i < end ; ++i) { for (j = 0 ; j < end ; ++j) { b+=a; } } std::cout << clock() - time << "ms" << std::endl; std::cout << b << std::endl; system("PAUSE"); return 0; }
Mit dem Objekt dauert es bei mir fast 10 mal so lange.
[ Dieser Beitrag wurde am 29.11.2002 um 00:23 Uhr von Gregor editiert. ]
-
feigling
was stand da gerade? *wissen will*
-
Original erstellt von <...>:
feigling
was stand da gerade? *wissen will*Jetzt steht was ähnliches da. Vorhin hatte ich nen kleinen Fehler drin, bzw. es hat an was anderem gelegen. ...jetzt wahrscheinlich auch : Durch das Objekt kann eine bestimmte Sache nicht mehr optimiert werden. ...ihr kommt schon drauf, was es ist.
-
Ich denke mal OOP ansich ist keine Bremse, aber man ist als OOP-Programmierer glaub ich ein bisschen großzügiger und baut in seine Klasse noch ein bisschen Extrazeugs rein, so dass das Programm geringfügig (eigentlich nicht merkbar) langsamer wird.
-
Original erstellt von <OOPler>:
Ich denke mal OOP ansich ist keine Bremse, aber man ist als OOP-Programmierer glaub ich ein bisschen großzügiger und baut in seine Klasse noch ein bisschen Extrazeugs rein, so dass das Programm geringfügig (eigentlich nicht merkbar) langsamer wird.Du merkst nen Faktor 10 bei der Geschwindigkeit nicht?!
Sicher : Das ist ein extremes Beispiel. Aber wenn man Pech hat, dann baut man sich sowas in irgendeiner Form in einen Programmteil ein, der schnell sein muss.
-
LOL, Gregor, ich hab deinen Code weder ausprobiert noch angeschaut. Wie kannst du mir sowas unterstellen? :p
-
Original erstellt von <OOPler>:
LOL, Gregor, ich hab deinen Code weder ausprobiert noch angeschaut. Wie kannst du mir sowas unterstellen? :pErst soll ich Code schreiben und dann liest ihn keiner und sagt mir, wo ich die fiese Bremse eingebaut habe! ...Naja! Wenigstens weiß ich, was bremst! Aber ich sag es euch mal nicht! :p
-
teste mal hier mit
class TestClass { private : int b; public : TestClass() :b(0) { } void doSomething () { b += 5; } int getResult () const { return b; } };
außerdem
int main(int argc, char *argv[]) { const int end = 50000; int b=0; int i,j; int a = 5; time_t time; TestClass testClass = TestClass(); time = clock();
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=Init#Answ
und vermeide Standard Ctor aufrufeund noch was, wie komms du nur! die Ausgabe mit zu messen?
[ Dieser Beitrag wurde am 29.11.2002 um 01:13 Uhr von Dimah editiert. ]
-
Da kommt schon gleich jemand der sich das ganze mal anschaut. Nur Geduld. Ich hab heute einfach keine Lust zu raten :p
-
Original erstellt von Dimah:
**und noch was, wie komms du nur! die Ausgabe mit zu messen?**
ups, sorry verkuckt
-
mach mal auß
b=testClass.getResult(); std::cout << clock() - time << "ms" << std::endl; std::cout << b << std::endl;
ein
std::cout << clock() - time << "ms" << std::endl; std::cout << testClass.getResult() << std::endl;
nicht das es viel speed bringen würde, aber sind sie gleicher
[ Dieser Beitrag wurde am 29.11.2002 um 01:19 Uhr von Dimah editiert. ]
-
OK! Du hast das a entdeckt! ...viel zu schnell!
...aber hier sieht es genau gleich aus und da kann man das a nicht so leicht löschen :
#include <iostream> #include <stdlib.h> #include <ctime> class TestClass { private : int a; int b; public : TestClass() :a(1),b(0) { } void doSomething () { a <<= 1; a += 1; b+=a; } int getResult () const { return b; } }; int main(int argc, char *argv[]) { const int end = 35000; int b=0; int i,j; int a = 1; time_t time; TestClass testClass; time = clock(); for (i = 0 ; i < end ; ++i) { for (j = 0 ; j < end ; ++j) { testClass.doSomething(); } } std::cout << clock() - time << "ms" << std::endl; std::cout << testClass.getResult() << std::endl; time = clock(); for (i = 0 ; i < end ; ++i) { for (j = 0 ; j < end ; ++j) { a <<= 1; a += 1; b+=a; } } std::cout << clock() - time << "ms" << std::endl; std::cout << b << std::endl; system("PAUSE"); return 0; }
Naja! Faktor 3 noch!
[ Dieser Beitrag wurde am 29.11.2002 um 01:29 Uhr von Gregor editiert. ]
-
Naja! Faktor 3 noch!
[/QB]mit msvc 6.0 autorenedition (sie optimiert nicht) kann ich das ergebnis nicht nach vollziehen
-
Original erstellt von Dimah:
**
mit msvc 6.0 autorenedition (sie optimiert nicht) kann ich das ergebnis nicht nach vollziehen**Ich habe g++ (aus MinGW) mit der höchsten Optimierungsstufe genutzt.
[ Dieser Beitrag wurde am 29.11.2002 um 01:45 Uhr von Gregor editiert. ]
-
sie?
-
Original erstellt von <LOL>:
sie?die autorenedition
Original erstellt von Gregor:
[quote]Original erstellt von Dimah:
[qb]
mit msvc 6.0 autorenedition (sie optimiert nicht) kann ich das ergebnis nicht nach vollziehenIch habe g++ (aus MinGW) mit der höchsten Optimierungsstufe genutzt.
[/QB][/QUOTE]
wie schlate ich sie ein
-
g++ -o Programm.exe Programm.cpp -O3
EDIT : Genauer gesagt hat meine IDE folgendes gemacht :
g++.exe -c main.cpp -o main.o -I"C:/Dev-Cpp/include" -I"C:/Dev-Cpp/include" -I"C:/Dev-Cpp/include/c++" -s -O3
g++.exe main.o -o "TestOOPSpeed.exe" -L"C:/Dev-Cpp/lib" -L"C:/qt/lib" -I"C:/Dev-Cpp/include" -I"C:/Dev-Cpp/include" -I"C:/Dev-Cpp/include/c++" -s -O3[ Dieser Beitrag wurde am 29.11.2002 um 02:00 Uhr von Gregor editiert. ]
-
dann müsste es aber "es" heissen.