Ich habe ein Framework, das XML basierend auf der HTTP-Anfrage und dem aktuellen Sitzungsstatus generiert. Ich kann in HTML testen, aber Produktionsausgabe wird VXML - vielleicht ein oder zwei "Aromen" aus verschiedenen Gründen.
Hier ist der langsame Teil meines HttpServlet:
%Vor%Dies dauert derzeit ~ 200ms. Ich möchte, dass es viel schneller geht. Vielleicht & lt; 10ms?
Bearbeiten:
Hier ist das XSL-Dokument. Das XML-Dokument ist normalerweise sehr klein. Nur ein paar Elemente. XML-Beispiel befindet sich unter XSL:
%Vor%Hier ist ein bisschen XML:
%Vor%Es ist schwierig, Leistungsprobleme zu diagnostizieren, ohne das XSLT zu sehen oder zu wissen, wie groß / komplex XML und XSLT sind.
Sie könnten die Kosten für das Parsing der Datei (en) bezahlen, entweder die XSLT oder die XML und / oder Sie könnten ein sehr ineffizientes XSLT Stylesheet haben.
Zum Beispiel:
//
XPATH-Anweisungen, die bei sehr großen XML-Dateien die Leistung beeinträchtigen können. @match
-Kriterium verschoben werden können. Dies bietet XSLT-Engines die Möglichkeit zur Optimierung. Es gibt XSLT-Profiler, die Sie verwenden können, um zu sehen, wo Engpässe in Ihrem XSLT sind. Zum Beispiel hat oXygen einen sehr guten Debugger / Profiler :
Wenn Sie die XSLT mehrmals ausführen, sollten Sie cachen das Transformatorobjekt . Auf diese Weise bezahlen Sie nur die Kosten, um sie zu laden und zu instantiieren und sie mehrmals zu verwenden.
Verschieben Sie zum Beispiel die Instanziierung Ihres XSLT Template
-Objekts in Ihr Severlet init()
und dann, wo Sie die Transformation durchführen, verwenden Sie das zwischengespeicherte TransformerFactory
obj:
Selbst beim Zwischenspeichern liegt der Grund für nicht akzeptable Leistung häufig im XSLT-Code selbst, den Sie gar nicht angezeigt haben.
Nach meiner Erfahrung gab es Fälle, in denen ich eine ineffiziente XSLT-Implementierung so ändern konnte, dass sie tausendfach beschleunigt wurde.
Sehr oft implementiert der Autor einen O (N ^ 2) Algorithmus oder schlechter, wenn ein O (N) oder sogar O (log (N)) Algorithmus existiert.
Geben Sie das zu lösende Problem an und geben Sie den XSLT-Code an, der das Problem löst. Dann könnte es für jemanden möglich sein, Ihnen eine bessere Lösung zu bieten .