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.
Es scheint, als ob es einen Treffer gegeben hat, jemand anderes hat die Benchmarking-Arbeit geleistet: Ссылка
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.
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)
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):
Tags und Links c# xml linq-to-xml