Code unten verwenden Auswertungen mit SaxonCA APIC# Cache Saxon Compiler und Ausführbare Objekte
Task newTask = Task.Run(() =>
{
Processor processor = new Processor();
DocumentBuilder documentBuilder = processor.NewDocumentBuilder();
documentBuilder.IsLineNumbering = true;
documentBuilder.WhitespacePolicy = WhitespacePolicy.PreserveAll;
XQueryCompiler compiler = processor.NewXQueryCompiler();
string query = BuildXqueryString();
if (!String.IsNullOrEmpty(query))
{
XQueryExecutable executable = compiler.Compile(query);
XQueryEvaluator evaluator = executable.Load();
evaluator.ContextItem = documentBuilder.Build(xmlNode);
var evaluations = evaluator.Evaluate();
}
}
Abfragen (XQuery) sind konstant und ändern sich nie zu laufen, bis es neue Build ist. Der obige Code wird für verschiedene Dokumente parallel ausgeführt. Wollte überprüfen, ob es eine Möglichkeit gibt, das Compiler/Evaluator-Objekt zwischenzuspeichern, um Abfragebewertungen für jedes von uns verarbeitete Dokument zu vermeiden.
Jede Hilfe wäre willkommen.
Danke Michael. Wird versuchen, die Anwendung so zu ändern, dass sie einen einzelnen Prozessor verwendet und XQueryExecutable zwischenspeichert. –
Nach dem Erstellen eines Prozesses für die App und Caching von XQueryExecutable funktioniert die Anwendung und die Leistung wurde verbessert. Danke –
Gut. Bitte klicken Sie auf das Häkchen, um die Antwort als akzeptiert zu markieren, dies hilft anderen Lesern, die später darauf kommen. –