tabellierte Kompilierungsdauern für Standardtools?

Gast #4542320
Mal eine vielleicht ungewöhnliche Frage:
Ich brauche gelegentlich ein paar Zusatzfunktionen, die in den 
vorkompilierten Standardversionen von Kicad, Spice, Octave usw. in 
Debian Linux nicht enthalten sind. Auf die Schnelle mal einen kleinen 
Patch geschrieben, der das Gewünschte erledigt, und dann warte ich 10 
Minuten - 10 Stunden aufs Kompilieren.

Sehr hilfreich wäre eine Datenbank von relativen Kompilierungsdauern, 
also z.B. "Octave-3.8 braucht 42 mal so lange wie ngspice-25.1". 
Natürlich hängt das von allen möglichen Flags, Kompilerversion usw. ab, 
aber ein grober Anhaltspunkt, ob ich ein paar Minuten warten muss oder 
erst mal schlafen gehen kann, wäre enorm hilfreich.

Gibt es solche Daten, vielleicht im Zusammenhang mit dem 
Linux-from-scratch Projekt?

Martin
Gast
Martin schrieb:
> Gibt es solche Daten, vielleicht im Zusammenhang mit dem
> Linux-from-scratch Projekt?

Warum ergänzte nicht die build-scripte um ein date >> Log.txt und 
compilierst den Kram auf deinem Referenzrechner selbst?

Geringfügig mehr script und du kannst das ganze über nacht laufen 
lassen.
Gast
Wesarion schrieb:
> Warum ergänzte nicht die build-scripte um ein date >> Log.txt und
> compilierst den Kram auf deinem Referenzrechner selbst?

Weil ich gerade dann, wenn ich ein Tool zum ersten Mal kompiliere gerne 
vorher schon in etwa wüsste, auf welche Wartezeit ich mich einstellen 
muss.
Gast
Martin schrieb:
> Ich brauche gelegentlich ein paar Zusatzfunktionen, die in den
> vorkompilierten Standardversionen von Kicad, Spice, Octave usw. in
> Debian Linux nicht enthalten sind. Auf die Schnelle mal einen kleinen
> Patch geschrieben, der das Gewünschte erledigt

hast du mal ein Beispiel, was du so alles an Features in diese Tools 
reinimplementiert hast?

Irgendwie fällt es mir schwer zu glauben dass du dich derart schnell in 
fremden Code reinfuchst, deine Änderungen implementierst (natürlich an 
einer architektonisch sinnvollen Stelle), kein Debuggen notwendig ist 
und du dich dann über die halbe Stunde Kompilieren ärgerst.
Gast
Klingt weltfremd und ist such Quatsch, weil niemand abschätzen kann, wie 
deine Änderungen sich auf die Kompilierzeit auswirken.
Diese Werte müssten ständig angepasst werden.
Moderator Persönliche Seite
Martin schrieb:
> Hat vielleicht irgendjemand auch eine sinnvolle Antwort?

Die sinnvolle Antwort: solch eine Tabelle wirst du nicht finden.

Es gibt einfach viel zu viele Randbedingungen und viel zu wenige
Anwendungsfälle, als dass sich jemand die Mühe machen würde, sowas
zu tabellieren.

Grob gerechnet kannst du erstmal sagen: je größer der Sourcecode
des Pakets, desto länger wird das Compilieren dauern.
Gast
Jörg W. schrieb:
> Es gibt einfach viel zu viele Randbedingungen und viel zu wenige
> Anwendungsfälle, als dass sich jemand die Mühe machen würde, sowas
> zu tabellieren.

Es soll sich niemand die Mühe machen. Ich frage mich nur, ob die Daten 
nicht schon irgendwo vorhanden sind. Z.B. bei Buildsystemen der 
Linuxdistributionen, für deren Lastverteilung es auch sinnvoll sein 
sollte, abschätzen zu können, wieviel Kompilierungszeit gebraucht wird, 
wenn eine bestimmte Menge an Patches eingegangen ist.

Jörg W. schrieb:
> Grob gerechnet kannst du erstmal sagen: je größer der Sourcecode
> des Pakets, desto länger wird das Compilieren dauern.

Ich glaube, da ist es eine bessere Abschätzung, zu sagen, dass jedes 
Paket 10 Minuten zum Kompilieren braucht. Die Größe des Quellcodes hat 
nun wirklich den allerkleinsten Einfluss. Um eine halbwegs brauchbare 
automatische Abschätzung zu haben, müsste man schon die generiertem 
Makefiles analysieren, nachsehen, welche Abhängigkeiten bestehen, 
inwieweit einzelne Dateien parallel kompiliert werden können, wie tief 
Klassenhierarchien verschachtelt sind, usw...

Nun aber bitte wirklich nur noch sinnvolle Antworten. Es hilft einfach 
nichts, wenn jeder, der solche Daten noch nicht gesehen hat, seinen Senf 
loswerden muss und behauptet, dass es solche Daten nicht geben kann.
Moderator Persönliche Seite
Martin schrieb:

> Es soll sich niemand die Mühe machen. Ich frage mich nur, ob die Daten
> nicht schon irgendwo vorhanden sind. Z.B. bei Buildsystemen der
> Linuxdistributionen,

In den Buildlogs des FreeBSD-Portbuild-Clusters vielleicht.

Aber da könnte ich dir jetzt auch nicht genau sagen, wo man da
anfangen müsste zu suchen.

>> Grob gerechnet kannst du erstmal sagen: je größer der Sourcecode
>> des Pakets, desto länger wird das Compilieren dauern.
>
> Ich glaube, da ist es eine bessere Abschätzung, zu sagen, dass jedes
> Paket 10 Minuten zum Kompilieren braucht. Die Größe des Quellcodes hat
> nun wirklich den allerkleinsten Einfluss.

Das widerspricht sehr deutlich meiner eigenen Erfahrung (ich baue
im Rahmen der FreeBSD-Ports so gut wie alles selbst).  Die entspricht
eher dem, was ich da oben geschrieben habe.
Gast
Installier dir doch Gentoo, dann findest du das ganz genau heraus.
Ist leider ähnlich sinnvoll wie eine Compiledauertabelle.

Compiledauer hängt von vielen Faktoren ab, Load auf der Maschine, 
Compilerversion, welcher Compiler überhaupt, in welcher Sprache das 
geschrieben ist, was du an Optionen zur Compilezeit festlegst, das 
darunterliegende Filesystem
Gast
foobar schrieb:
> Installier dir doch Gentoo, dann findest du das ganz genau heraus.

Von genau schrieb ich nie etwas.

> Compiledauer hängt von vielen Faktoren ab,

Ach nee, sach an. Hast du außer meiner Überschrift noch etwas von meinem 
Beitrag gelesen?
Gast
Peter D. schrieb:
> Man kann ja einfach schon nebenbei den Compiler einmal laufen lassen.
> Nur im ersten Lauf muß ja alles compiliert werden, danach nur noch der
> geänderte Teil.

Kommt darauf an wie clever das makefile geschrieben wurde. Wenn die 
Änderungen h files betreffen siehts dann evt. nochmal anders aus.

Ausserdem schwankt sowas extrem mit der vorhandenen Hardware: SSD, 
prallelisierung, ...
Gast
Martin schrieb:
> foobar schrieb:
>> https://buildd.debian.org/status/logs.php?pkg=octave&arch=amd64
>
> Na bitte, geht doch.
in der Tat interessant, aber was bringen dir die Zahlen, ohne die 
Randbedingungen zu kennen, unter denen sie zustande kamen? ...oder habe 
ich etwas überlesen?

Martin schrieb:
> Keinem ist geholfen, wenn jeder zu jedem Thema in
> der einen oder anderen Form schreibt "Ich habe keine Ahnung, aber hier
> kommt auch noch mein Senf."
...naja, solange der Senf zum Thema beiträgt und (z.B.) dein 
Anliegen/Ideen auf Sinnhaftigkeit hinterfragt, vielleicht doch! Zu 
mindestens machen die Leute sich Gedanken zu deinem(!) Problem und 
versuchen dir zu helfen...

Martin schrieb:
> Das hier ist alles ein Riesenhaufen
> Senfsoße.
...dann frage einfach nicht hier!

Martin schrieb im Beitrag #4543268:
> fünününü
...ist das jetzt eine Frage oder eine Antwort auf welche Frage?
nono schrieb:
> in der Tat interessant, aber was bringen dir die Zahlen, ohne die
> Randbedingungen zu kennen, unter denen sie zustande kamen?

Man kompiliert sich selbst ein Paket - wie binutils - und nimmt dabei 
die Zeit. Damit hat man die eigene Zeit und die von Debian, für 
beliebige Pakete kann man nun näherungsweise einfach Dreisatz benutzen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.