XPathSelectElement im Vergleich zu Nachkommen

8

Ich habe mich gefragt, ob es bei der Verwendung von einfachen Abfragen Leistungsunterschiede gibt als:

%Vor%     
Mattias 27.10.2009, 09:16
quelle

4 Antworten

8

Beachten Sie, dass dies

ist %Vor%

entspricht Ihrer ersten Aussage.

Es wird einen Leistungsunterschied geben, weil die Methoden unter der Haube sehr unterschiedliche Dinge tun. Das Optimieren von reinen In-Memory-Operationen ist jedoch ein wenig sinnlos, wenn Sie nicht mit einem großen Datensatz arbeiten. Wenn Sie mit einem großen Datensatz arbeiten, sollten Sie die Leistung beider Alternativen messen, anstatt vorherzusagen, welche davon schneller ausgeführt wird.

    
Christian Hayter 27.10.2009, 09:23
quelle
4

Es scheint, als ob es einen Treffer gegeben hat, jemand anderes hat die Benchmarking-Arbeit geleistet: Ссылка

    
roufamatic 02.06.2011 23:30
quelle
1

Ja wird es sein, obwohl die zwei Zeilen nicht gleichwertig sind.

Der XPath muss letztendlich in einen LINQ-Ausdruck geparst werden, der dies dann tun würde: -

%Vor%

Es ist jedoch durchaus möglich, dass intern eine kompilierte Version des XPath-Ausdrucks gespeichert wird, so dass die Verwendung eines XPath nur die Zeit kostet, die benötigt wird, um die Zeichenfolge in einem intern gehaltenen Wörterbuch nachzuschlagen. Ob das tatsächlich der Fall ist oder nicht weiß ich nicht.

    
AnthonyWJones 27.10.2009 09:27
quelle
1

Nach meinen begrenzten Tests scheint die Leistung sehr ähnlich zu sein. Ich nahm eine Beispiel-XML-Nachricht von Ссылка

XPath:

%Vor%

LINQ-Abfrage:

%Vor%

Ich habe dann alle 10.000 Mal ausgeführt (mit Ausnahme der Zeit, die zum Analysieren der Zeichenfolge und des ersten Laufs benötigt wurde, um das CLR-Rauschen zu eliminieren).

Ergebnisse (100.000 Iterationen)

  • XPath auf XElement: 60,7 ms
  • LINQ to XML in XElement: 85.6 ms
  • XPath auf XPathDocument: 43,7 ms

Es scheint also, dass zumindest in einigen Szenarien die XPath-Auswertung auf XElement besser ist als die von LINQ nach XML. XPath-Auswertungen in XPathDocument sind noch schneller.

Es sieht jedoch so aus, als würde das Laden eines XPathDocuments etwas länger dauern als das Laden eines XDocuments (1000 Iterationen):

  • Zeit zum Laden von XPathDocument: 92,3 ms
  • Zeit zum Laden von XDocument: 81,0 ms
Igor Pashchuk 12.09.2012 20:24
quelle

Tags und Links