Doxygen ist Langsam
Doxygen dauert etwa 12 Stunden für unsere code-Basis. Dies ist vor allem, weil es ist eine Menge code zu verarbeiten (~1.5 M-Linien). Aber, es ist sehr schnell nähert sich der Punkt, an dem wir nicht können nächtliche Aktualisierungen der Dokumentation, weil Sie zu lange dauern. Wir haben bereits zur Verringerung der graph der Tiefe, um es bis zu 12 Stunden.
Ich habe versucht, die standard-Ansätzen, aber ich wirklich brauchen, qualitativ hochwertige Ausgabe und diese enthält Grafiken und SEARCH_INCLUDES. Ich habe eine ziemlich gute Maschine zum ausführen von Doxygen, aber Doxygen nicht nehmen Vorteil seiner vielen Kerne. (Es Heringe ein single-CPU auf dem server zu bauen, aber nur 4% der verfügbaren system.) Mit einem Multithread-Dot-build ist praktisch, aber das ist nur die Hälfte oder so der Bauzeit.
Gibt es irgendwelche Techniken, die ich verwenden können, zum ausführen von doxygen über mehrere Prozesse und manuell Splitter die Aufgabe? Ich habe gesehen, einige sprechen über das erstellen von tag-Dateien, aber ich verstehe nicht, genug über Sie zu wissen, wenn Sie würde tun, was ich will. Was ich Suche ist etwas wie:
doxygen Doxyfile-folder1
doxygen Doxyfile-folder2
doxygen Doxyfile-folder3
doxygen Doxyfile-folder4
doxygen-join output/folder1/html output/folder2/html output/folder3/html output/folder4/html
Natürlich, ich bin nur so Zeug, aber das ist eine Idee von dem, was ich Suche. Auch verwende ich viel mehr als 4 Prozesse.
- Hat der server genug RAM zu halten, die gesamte Codebasis zwischengespeichert und ausgeführt, doxygen, ohne austauschen?
- Mehr RAM und/oder schnellere Festplatte. Pick-up eine 80 GB SSD und setzen Sie Ihren code auf. Software, IO-intensive profitieren enorm von einer modernen solid-state-Festplatte.
- Gut, seine derzeit sitzen auf einem raid-10-array 10k-Laufwerke, so sollte es nicht sein, dass langsam...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Tag-Dateien sind in der Regel der Weg zu gehen, wenn
Ein-tag-Datei ist im Grunde nur eine strukturierte Liste von Symbolen mit links an die Stelle in der Dokumentation. Tag-Dateien erlauben, doxygen, links von der Dokumentation einer Komponente zu der anderen.
Es ist ein 2-Schritt-Prozess:
Ersten, die Sie ausführen doxygen auf jede Komponente zu erzeugen die tag-Datei für die Komponente. Sie können dies tun, indem Sie deaktivieren alle Ausgabe und Verwendung GENERATE_TAGFILE. Also für Komponente A, ein Doxyfile.tagonly die folgenden Einstellungen:
Werden Sie feststellen, dass das ausführen von doxygen diese Weise ist sehr schnell.
Der zweite Schritt ist die Generierung der eigentlichen Dokumentation. Für die Komponente Ein, die Sie benötigen ein Doxyfile enthält die tag-Dateien der Komponenten B und C, da wir bestimmt abhängig von diesen Komponenten.
Mit diesem Ansatz habe ich die Möglichkeit zum generieren von Dokumentation für 20M+ Zeilen code, verteilt auf 1500+ - Komponenten in unter 3 Stunden auf einem standard-desktop PC (Core i5 mit 8Gb RAM und Linux 64bit), einschließlich source-browsing, vollständige call-Graphen und UML-Stil Diagramme aller Daten-Strukturen. Beachten Sie, dass der erste Schritt dauerte nur 10 Minuten.
Um dies zu erreichen machte ich ein Skript zu generieren, das Doxyfile ist für jede Komponente auf der Grundlage der Liste der Komponenten und deren direkten Abhängigkeiten. Im ersten Schritt habe ich laufen 8 Instanzen von doxygen parallel (mit http://www.gnu.org/s/parallel/). Im zweiten Schritt habe ich laufen 4 Instanzen von doxygen parallel.
Sehen http://www.doxygen.nl/manual/external.html weitere Infos über tag-Dateien.
GENERATE_HTML=YES
bei der Generierung der tag-Datei ("master" - build nicht erzeugen der HTML-Dokumentation für die verknüpften Projekte).