Wie lang kompiliert (und linkt) ihr?



  • ca. 120000loc ca. 6 tage 13 std.

    80286 1MB ram... solangsam sollte ich nen neuen PC beantragen.



  • Ca. 15-20 Minuten für C/C++-Source, und dann nochmal 20 Minuten für LabView-Source... das sind gleich mehrere Kaffepausen...



  • 2-3 minuten fürs deployment von ca. 2 mio. zeilen java 😃



  • Als Java-Entwickler ist dieser Thread irgendwie strange. 🤡



  • Was ist das denn für ein Fred ?
    Kommt doch wohl auf ziemlich viele Faktoren drauf an.
    Größe des Projektes, OS, Compiler/Linker, verwendete Hardware.
    Daher ist hier jede Antwort auf Dauer des Compile Vorgangs und Größe des Projektes als relativ wertlos einzustufen.



  • flk schrieb:

    Was ist das denn für ein Fred ?
    Kommt doch wohl auf ziemlich viele Faktoren drauf an.
    Größe des Projektes, OS, Compiler/Linker, verwendete Hardware.
    Daher ist hier jede Antwort auf Dauer des Compile Vorgangs und Größe des Projektes als relativ wertlos einzustufen.

    Deswegen hab ich ja die Ursprungsfrage des Threadstarters mit dem Wunsch nach zusätzlichen Daten innerhalb der Antworten modifiziert 😉



  • byto schrieb:

    Als Java-Entwickler ist dieser Thread irgendwie strange. 🤡

    Wieso denn? Java-Programme müßen auch compiliert werden, Nur muß man fast nie einen kompletten Rebuild des gesamten Projekts machen.



  • Andromeda schrieb:

    byto schrieb:

    Als Java-Entwickler ist dieser Thread irgendwie strange. 🤡

    Wieso denn? Java-Programme müßen auch compiliert werden, Nur muß man fast nie einen kompletten Rebuild des gesamten Projekts machen.

    Und wenn, dann dauert der Rebuild bloss deswegen solange weil Java Programmierer immer gleich 10x soviel LOCs schreiben wie notwendig wären.

    Und auch dann ist "lange" meist nicht in Stunden zu rechnen sondern (wenn überhaput) in Minuten.



  • hustbaer schrieb:

    Und wenn, dann dauert der Rebuild bloss deswegen solange weil Java Programmierer immer gleich 10x soviel LOCs schreiben wie notwendig wären.

    Besser gut dokumentierter, wartbarer Code, der 10x so lang ist, als irgendwelche kongenialen und komplizierten Wegwerf-Einzeiler. 🤡



  • Andromeda schrieb:

    byto schrieb:

    Als Java-Entwickler ist dieser Thread irgendwie strange. 🤡

    Wieso denn? Java-Programme müßen auch compiliert werden, Nur muß man fast nie einen kompletten Rebuild des gesamten Projekts machen.

    Bei mir kompilieren 10.000 Zeilen Javacode (als komplettes Rebuild) in ungefähr einer Sekunde. Und das sollte ungefähr linear mit der Anzahl der Zeilen skalieren. Deshalb ist der Thread hier für Javaprogrammierer "strange". Der Thread adressiert ein Problem, das bei Java überhaupt nicht existiert.


  • Administrator

    byto schrieb:

    Besser gut dokumentierter, wartbarer Code, der 10x so lang ist, als irgendwelche kongenialen und komplizierten Wegwerf-Einzeiler. 🤡

    Redest du gerade davon, dass Java gut dokumentierbar und wartbarer Code hat? Ich wechsle jedes grössere Projekt nach C++, weil ich dort bessere Dokumentation und Wartung habe. Schon nur die Deklaration <-> Definition Trennung von C++ ist viel angenehmer zum warten. In Java ist immer alles am Stück, ganz ganz hässlich, meiner Meinung nach.
    Aber egal, darum geht es hier ja nicht. Falls ein Diskussionsbedarf und Flamewarbedarf besteht, neuen Thread eröffnen :p

    Meine Programme sind immer irgendwo im Bereich von ein paar 10'000 LOC, daher habe ich nicht so lange Compilezeiten. Ausser wenn ich massiver Templateeinsatz habe, was mit der Verwendung von Boost vermehrt vorkommt. Da steigen die Zeiten manchmal auch bei so wenig Code auf ein zwei Minuten.

    Grüssli



  • mh, also ein komplettes rebuild des java projekts an dem ich gerade beruflich arbeite dauert durchaus so 5-10 minuten. (auf einem t30...)



  • Gregor@Uni schrieb:

    Bei mir kompilieren 10.000 Zeilen Javacode (als komplettes Rebuild) in ungefähr einer Sekunde. Und das sollte ungefähr linear mit der Anzahl der Zeilen skalieren. Deshalb ist der Thread hier für Javaprogrammierer "strange". Der Thread adressiert ein Problem, das bei Java überhaupt nicht existiert.

    Was macht ein Javacompiler denn? Syntaxcheck und jede Klasse in Bytecode in ne Datei schreiben? Und Bytecode ist doch nur ne andere Codierung für Sourcecode - man bekommt den Source auf jedenfall mal wieder 1:1 aus dem Bytecode mit nem Decompiler.
    Und brauchen deswegen Javaporgramme immer so lang zum starten, weil sie just in time kompiliert werden? Also das kompilieren das bei C++ schon viel früher gemacht wird.
    Wenn man diese Just in time Compilezeit auch noch dazu rechnet, dann braucht Kompilieren in Java auch länger.

    borg schrieb:

    mh, also ein komplettes rebuild des java projekts an dem ich gerade beruflich arbeite dauert durchaus so 5-10 minuten. (auf einem t30...)

    Generierst du da auch Code (MDA) oder nur kompilieren?



  • Dravere schrieb:

    Ich wechsle jedes grössere Projekt nach C++, weil ich dort bessere Dokumentation und Wartung habe.

    Wie groß sind die Projekte dann, dass sich der Aufwand der Portierung für Dich lohnt?

    Meine Programme sind immer irgendwo im Bereich von ein paar 10'000 LOC, daher habe ich nicht so lange Compilezeiten.

    Aha, winzig. 🤡



  • Dravere schrieb:

    Redest du gerade davon, dass Java gut dokumentierbar und wartbarer Code hat? Ich wechsle jedes grössere Projekt nach C++, weil ich dort bessere Dokumentation und Wartung habe. Schon nur die Deklaration <-> Definition Trennung von C++ ist viel angenehmer zum warten. In Java ist immer alles am Stück, ganz ganz hässlich, meiner Meinung nach.

    Meine Programme sind immer irgendwo im Bereich von ein paar 10'000 LOC, daher habe ich nicht so lange Compilezeiten.

    😃

    Was ist der Vorteil immer Deklaration und Definition ändern zu müssen, statt nur eines?



  • Dravere schrieb:

    Ich wechsle jedes grössere Projekt nach C++, weil ich dort bessere Dokumentation und Wartung habe.

    das sollte jetzt ein witz sein, oder?
    🙂



  • EinPaarFragen schrieb:

    Wenn man diese Just in time Compilezeit auch noch dazu rechnet, dann braucht Kompilieren in Java auch länger.

    Naja nicht wirklich. Jetzt kann man natürlich noch argumentieren, dass der JIT-Compiler nicht so gut optimiert, aber ich habe zum Beispiel gar keine riesigen Unterschiede zwischen Debug- und Release-Build. Der Hauptgrund, warum Java schneller compiliert ist, weil es einfach ein moderneres Übersetzungsmodell hat.

    Das textuelle includen von C++ macht es unglaublich langsam, lass dir mal mit ausgeben, was für jede Sourcedatei alles direkt und vor allem indirekt includiert wird... da fallen dir die Augen aus. Je nachdem, wie gut man sein Projekt organisiert, kann man da noch was rausholen, aber C++-Compiler haben einfach viel mehr zu tun.

    Ich brauche 12 Minuten für einen kompletten rebuild in der Arbeit, weiß aber nicht, wieviele LOC. Es sind 18 C++-Projekte in so einer Projektmappe von VS.



  • Hauptgrund, warum Java schneller compiliert ist, weil es einfach ein moderneres Übersetzungsmodell hat

    Nö, der Hauptgrund sind Templates. Zumindest bei dem Code den ich schreibe, und ich bin noch LANGE nicht extrem was das angeht.



  • Das trifft's imho noch nicht ganz. Das Grund ist imho, parsen des Templates -> vector<int> erstellen -> compilieren, parsen des Templates -> vector<float> erstellen -> compilieren, parsen des Templates -> ...

    Lass mich kurz nachdenken, welchen immer gleichen Schritt könnte man sich mit einem besseren Übersetzungsmodell sparen? 🙂 Das geparste Template kann höchstens innerhalb einer Übersetzungseinheit weiterverwendet werden, von tausend, also fast gar nicht. Dad heißt, die Arbeit wird sogar für die gleichen Instanzierungen ständig wiederholt. Wenn das mal keine Unzulänglichkeit im Übersetzungsmodell ist, dann weiß ich's nicht.



  • hustbaer schrieb:

    Hauptgrund, warum Java schneller compiliert ist, weil es einfach ein moderneres Übersetzungsmodell hat

    Nö, der Hauptgrund sind Templates.

    naja, ich mache nur mit C rum. wenn mich nicht alles täuscht, hab ich noch keinen C-compiler gesehen, der 10000 lines in 1 sekunde schafft (wie gregor es mit java beschrieb ^^). ich nehme an, es liegt auch an optimierungen, die so'n C compiler machen muss, während sich java fast 1:1 in bytecode übersetzen lässt.
    🙂


Anmelden zum Antworten