unsere Anwendung führt Graphen basierte Algorithmen aus. Dem Anwender möchten wir Ergebnisse (Graphen) als Ergebnis darstellen. Wir haben aktuell
das Tool Graph Viz (
http://graphviz.org/) in Verwendung. Wir schreiben den Graphen als Textdatei und rufen dan GraphViz via Shell execute auf , alles ziemlich ähnlich zu (
http://sourceforge.net/projects/gengraph/)
Delphi-Quellcode:
if not FileExists(DotExe) then
Exit(-1);
Tmp := IncludeTrailingPathDelimiter(GetUniqueTempFolder('~instgraph'));
ForceDirectories(Tmp);
Source.SaveToFile(Tmp + 'tmp.dot');
{ Generate parameters }
Params := '';
if (gmOutputPNG in Modes) then
begin
Params := Params + '-Tpng -o' + Tmp + 'output.png ';
end;
Params := Params + Tmp + 'tmp.dot'; // Input-file
{ Do execution }
ExecAndWait(FDotExe, Params, 'open', True, SW_HIDE);
{ Parse results }
if (gmOutputPNG in Modes) then
begin
Png.LoadFromFile(Tmp + 'output.png');
end;
DelTree(Tmp);
Für kleine Graphen funktioniert unsere Anwendung super , für mittlere Graphen ( 1000 ... 5000 Knoten und 1000 Kanten kann man nicht mehr auf das Bild warten, die Rechenzeit geht nach unendlich

obwohl die Textdaten des Graphen nach wenigen Sec. im TMemofeld in unserer Anwendung bereits angezeigt werden.
Hierzu nun folgende Fragen :
a) kann dies an unserem code liegen, habe ich irgendwo einen Performance Blocker eingebaut ?
b) kennt jemand Tricks um GraphViz zu beschleunigen
c) gibt es Parameter zum Beschleunigen der Erstellung der *.png Datei ?