Leider explodieren die Übersetzungszeiten mit jeder neuen Qt Version drastisch. Ursache dafür sind die diesbezüglich definitiv suboptimalen Qt-Header.
Ich habe den Trolltech Support während der Qt3 Prerelease Phase darauf hingewiesen, wie man die Übersetzungszeiten mit relativ wenigen Handgriffen deutlich reduzieren kann. Natürlich sind die Compilierzeiten nicht das einzige Kriterium beim Entwurf der Header, aber bei Trolltech fehlte damals einfach das Problembewußtsein.
Ein Tool das versucht die Compile Last zu verteilen ist sicher eine feine Sache, aber wenn man wenig unternimmt um diese Last gar nicht erst entstehen zu lassen, hält sich meine Begeisterung in Grenzen.
Vielleicht solltest du diese Handgriffe nochmals bzw. überhaupt veröffentlichen, z.B. bei dot.kde.org (oder .com?), oder in einer der -devel-Mailing-Listen von KDE. Dann testen es einige Entwickler und üben so u.U. etwas Druck auf Trolltech aus. Ich wäre auch interessiert, obwohl noch nicht QT- bzw. KDE-Entwickler.
Das sind keine Geheimnisse, sondern einfach die üblichen Verdächtigen, wie man sie bei fast allen C++ Projekten findet.
Ich will ein besonders signifikantes Beispiel geben: qobject.h includiert unnötigerweise qevent.h, was damit von nahezu jeder Datei mitübersetzt wird. Löscht man den include muß man dafür einige forward Deklarationen in verschiedenen Headern einfügen. Verschiebt man noch 2 inline Funktionen aus qapplication.h nach qapplication.cpp (IMO ist inlining dabei nicht wichtig), kann man auch da qevent.h löschen und bekommt damit die moc-file qevent.h frei.
Um ein paar Zahlen zu liefern hab ich eines meiner Projecte: http://www.sourceforge.net/projects/mdtoceditor auf meiner Kiste übersetzt:
Orginal Qt Header:
real 3m27.676s user 3m07.670s sys 0m5.120s
qevent.h Optimierung:
real 2m47.423s user 2m30.419s sys 0m5.319s
Packt man die selten benötigten Drag&Drop Events in einen eigenen Header gewinnt man bei mdtoceditor noch mal 3 Sekunden. Das klingt zwar nach nicht viel, hat man aber 10 Änderungen dieser Art, gewinnt man bereits 30 Sekunden.
Ich hatte damals daran gedacht, eine auf Übersetzungszeit optimierte Qt Version zu bauen und zu veröffentlichen. Die wäre zwar nicht binär kompatibel, wäre aber zumindest in der Entwicklungsphase sicher hifreich. Sinn macht das aber nur, wenn ich die aktuell halte, aber meine Kapazitäten sind mit der Pflege der Qwt-lib leider erschöpft. Aber vielleicht liest das hier ja jemand, der Luft hat.
Wenn du eine Verbesserung an den QT-Header Dateien hast, dann mache sie einfach öffentlich zugänglich. Je mehr es wissen (und nutzen) desto mehr steigt IMHO auch der Druck auf Trolltech ... mal abgesehen davon, das das KDE-Team auch Druck machen kann
Ich finde, die Linuxgemeinde sollte Geld zusammenlegen und die QT-Lizenz von Trolltech kaufen und unter GPL stellen, denn ansonsten könnte sich das in Zukunft zu einem Riesenproblem entwickeln. Das sollte aber bald geschehen, denn je weiter sich Linux verbreitet, umso steiler wird wohl der Preis steigen
@ Tom: Um dir die Worte meines Vorgaengers zu erklaeren: Fuer Betriebssysteme, die selbst unter der GPL stehen (wie Linux), gibt es die Moeglichkeit, Qt unter der GPL zu betreiben, wenn man selbst nur GPL-Programme schreibt. Ausserdem gibt es einen Vrrtrag mit der KDE-League, der vorschreibt, das die letzte Qt-Version von Trolltech (falls Trolltech jemals das Interesse an Qt verlieren sollte) unter eine freie Lizenz gestellt werden soll (ich bin jetzt nicht sicher ober die GPL oder die BSD-Lizenz).
Ich gdenke obige Postings beziehen sich wohl für QT unter Windows, dafür wird keine "Open-Source"-Lizenz angeboten (ob das nun gut oder schlecht ist, ist 'ne andre' Frage)
Ach ja... netter Gedanke, nur funktionier der nicht. 1. eine Lizenz darfst Du nicht so einfach jedem zugänglich machen, es sei denn, das ist Inhalt der Lizenz. 2. Soviel Geld wird wohl kaum jemand aufbieten können. Wir unterhalten uns nicht über läppische 750 USD für eine Lizenz, sondern um das Abkaufen eines Produkts und der dazugehörigen Urheberrechte. 3. Wenn Du irgendein Tool im Quellcode hast und entgegen der Lizenz im Quellcode frei veröffentlichst, bist Du Kanonenfutter für jeden dahergelaufenen Rechtsanwalt. Von Schadenersatz gar nicht zu reden.
Ich habe den Trolltech Support während der Qt3 Prerelease Phase darauf hingewiesen, wie man die Übersetzungszeiten mit relativ wenigen Handgriffen deutlich reduzieren kann. Natürlich sind die Compilierzeiten nicht das einzige Kriterium beim Entwurf der Header, aber bei Trolltech fehlte damals einfach das Problembewußtsein.
Ein Tool das versucht die Compile Last zu verteilen ist sicher eine feine Sache, aber wenn man wenig unternimmt um diese Last gar nicht erst entstehen zu lassen, hält sich meine Begeisterung in Grenzen.
Uwe
Ich wäre auch interessiert, obwohl noch nicht QT- bzw. KDE-Entwickler.
Schönen Tag noch,
Matthias
Ich will ein besonders signifikantes Beispiel geben: qobject.h includiert unnötigerweise qevent.h, was damit von nahezu jeder Datei mitübersetzt wird. Löscht man den include muß man dafür einige forward Deklarationen in verschiedenen Headern einfügen. Verschiebt man noch 2 inline Funktionen aus qapplication.h nach qapplication.cpp (IMO ist inlining dabei nicht wichtig), kann man auch da qevent.h löschen und bekommt damit die moc-file qevent.h frei.
Um ein paar Zahlen zu liefern hab ich eines meiner Projecte: http://www.sourceforge.net/projects/mdtoceditor auf meiner Kiste übersetzt:
Orginal Qt Header:
real 3m27.676s
user 3m07.670s
sys 0m5.120s
qevent.h Optimierung:
real 2m47.423s
user 2m30.419s
sys 0m5.319s
Packt man die selten benötigten Drag&Drop Events in einen eigenen Header gewinnt man bei mdtoceditor noch mal 3 Sekunden. Das klingt zwar nach nicht viel, hat man aber 10 Änderungen dieser Art, gewinnt man bereits 30 Sekunden.
Ich hatte damals daran gedacht, eine auf Übersetzungszeit optimierte Qt Version zu bauen und zu veröffentlichen. Die wäre zwar nicht binär kompatibel, wäre aber zumindest in der Entwicklungsphase sicher hifreich. Sinn macht das aber nur, wenn ich die aktuell halte, aber meine Kapazitäten sind mit der Pflege der Qwt-lib leider erschöpft. Aber vielleicht liest das hier ja jemand, der Luft hat.
Uwe
Je mehr es wissen (und nutzen) desto mehr steigt IMHO auch der Druck auf Trolltech ... mal abgesehen davon, das das KDE-Team auch Druck machen kann
Um dir die Worte meines Vorgaengers zu erklaeren:
Fuer Betriebssysteme, die selbst unter der GPL stehen (wie Linux), gibt es die Moeglichkeit, Qt unter der GPL zu betreiben, wenn man selbst nur GPL-Programme schreibt.
Ausserdem gibt es einen Vrrtrag mit der KDE-League, der vorschreibt, das die letzte Qt-Version von Trolltech (falls Trolltech jemals das Interesse an Qt verlieren sollte) unter eine freie Lizenz gestellt werden soll (ich bin jetzt nicht sicher ober die GPL oder die BSD-Lizenz).
Gruss
Tackat
Und der Preis wäre ja wohl viel zu hoch!
dafür wird keine "Open-Source"-Lizenz angeboten
(ob das nun gut oder schlecht ist, ist 'ne andre' Frage)
1. eine Lizenz darfst Du nicht so einfach jedem
zugänglich machen, es sei denn, das ist Inhalt
der Lizenz.
2. Soviel Geld wird wohl kaum jemand aufbieten
können. Wir unterhalten uns nicht über läppische
750 USD für eine Lizenz, sondern um das Abkaufen eines Produkts
und der dazugehörigen Urheberrechte.
3. Wenn Du irgendein Tool im Quellcode hast und entgegen
der Lizenz im Quellcode frei veröffentlichst, bist
Du Kanonenfutter für jeden dahergelaufenen Rechtsanwalt.
Von Schadenersatz gar nicht zu reden.