QString, Performance und Co
Verfasst: 24. August 2007 20:17
Hallo zusammen,
ich bin neu in QT und auch in diesem Forum also sag mal Hallo all den QT Experten hier im Forum
Kurz zu meiner Person ich hab mich bisher noch nie wirklich mit einem plattform independent Framework auseinander gesetzt, deshalb wollte ich mich etwas weiterentwickeln und bin dabei auf QT 4 gestossen.
Bisher hab ich hauptsächlich ein bisschen in C und JAVA herumexperimentiert und einiges in php/javascript gemacht. Da mir Java aber immer etwas träge vorkam und ich mal was in Richtung Algorithmen machen wollte, nichts schweres einfach mal so aus Spass ein paar Sortieralgos etc. implementieren oder so.
Nun genug der Vorgeschichte und wieder Oon topic, ich hab mir mal QT für Windows (mingw) installiert und hab mir aus der Helloworld eine einfache Testappl. geschrieben und hab mich halt gefragt wie groß der Geschwindigkeitsunterschied zwischen QT und JAVA tatsächlich ist und ich bin leider negativ überrascht worden.
Also ich hab folgenden Code laufen lassen und entsprechendes auch in Java und 'reinem' c++ mit mingw.
Die Ausführungszeiten liegen bei: (Mittelwert aus 5 Durchläufen)
QT: 20780 ms
Java: 10104 ms
C++: 3456 ms
Wenn ich die Anzahl der Durchlaufe etwas erhöhe und anstelle von String nur int summiere bekomme ich folgendes:
QT: 15812 ms
Java: 6508 ms
C++: 520 ms
Die absoluten Werte sind nicht sehr relevant aber die Verhältnisse sprechen doch eine ziemlich klare Sprache.
Ich kann mir aber eigentlich nicht vorstellen, dass das QT Framework so viel langsamer sein soll als Java. Deshalb wollt ich mal fragen, ob ich vielleicht einen Denkfehler gemacht hab oder woran das liegen könnte.
Bzw. gibt es generell Tipps mit denen man die Geschwindigkeit erhöhen kann?
Danke schon mal für eure Hilfe.
ich bin neu in QT und auch in diesem Forum also sag mal Hallo all den QT Experten hier im Forum
Kurz zu meiner Person ich hab mich bisher noch nie wirklich mit einem plattform independent Framework auseinander gesetzt, deshalb wollte ich mich etwas weiterentwickeln und bin dabei auf QT 4 gestossen.
Bisher hab ich hauptsächlich ein bisschen in C und JAVA herumexperimentiert und einiges in php/javascript gemacht. Da mir Java aber immer etwas träge vorkam und ich mal was in Richtung Algorithmen machen wollte, nichts schweres einfach mal so aus Spass ein paar Sortieralgos etc. implementieren oder so.
Nun genug der Vorgeschichte und wieder Oon topic, ich hab mir mal QT für Windows (mingw) installiert und hab mir aus der Helloworld eine einfache Testappl. geschrieben und hab mich halt gefragt wie groß der Geschwindigkeitsunterschied zwischen QT und JAVA tatsächlich ist und ich bin leider negativ überrascht worden.
Also ich hab folgenden Code laufen lassen und entsprechendes auch in Java und 'reinem' c++ mit mingw.
Code: Alles auswählen
#include <QApplication>
#include <QPushButton>
#include <QTime>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QTime t;
int i,j,k;
QString output;
t.start();
for(i=0;i<1000;i++) {
for(j=0;j<1000;j++) {
output="Test;";
for(k=0;k<10;k++) {
output += k + ";";
}
}
}
QString text = "Test: " + QString::number(t.elapsed());
QPushButton quit(text);
QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));
quit.show();
return app.exec();
}
QT: 20780 ms
Java: 10104 ms
C++: 3456 ms
Wenn ich die Anzahl der Durchlaufe etwas erhöhe und anstelle von String nur int summiere bekomme ich folgendes:
QT: 15812 ms
Java: 6508 ms
C++: 520 ms
Die absoluten Werte sind nicht sehr relevant aber die Verhältnisse sprechen doch eine ziemlich klare Sprache.
Ich kann mir aber eigentlich nicht vorstellen, dass das QT Framework so viel langsamer sein soll als Java. Deshalb wollt ich mal fragen, ob ich vielleicht einen Denkfehler gemacht hab oder woran das liegen könnte.
Bzw. gibt es generell Tipps mit denen man die Geschwindigkeit erhöhen kann?
Danke schon mal für eure Hilfe.