Heim Backend-Entwicklung XML/RSS-Tutorial Leistungsvergleich von XML-Datenlesemethoden (2)

Leistungsvergleich von XML-Datenlesemethoden (2)

Feb 13, 2017 pm 03:45 PM

Apropos, in der letzten Ausgabe wurde die allgemeine XML-Lesemethode zusammengefasst, aber normalerweise verwenden wir nicht unbedingt alle Daten der XML-Quelle, also habe ich mit dem Lesen einiger Daten experimentiert, wie zum Beispiel der Position basierend auf dem Anfangsbuchstaben des Titels.

Für die drei Zufallslesemethoden müssen Sie nur die Abfragebedingungen ändern

 

XmlDocument:
var nodeList = doc.DocumentElement.SelectNodes("item[substring(title,1,1)='M'][position() mod 10 = 0]");
  XPathNavigator:
var nodeList = nav.Select("/channel/item[substring(title,1,1)='M'][position() mod 10 = 0]");
  Xml Linq:
var nodelist = from node in xd.XPathSelectElements("/channel/item[substring(title,1,1)='M'][position() mod 10 = 0]")
Nach dem Login kopieren

Mit XPath müssen Sie nur eine Codezeile ändern. XPath ist außerdem relativ einfach zu beherrschen, viel einfacher als SQL. Sie können sich die Syntaxeinführung von W3C Shcool und LINQ To XML für XPath-Benutzer von MSDN ansehen und die Geheimnisse in einer Viertelstunde beherrschen.

Aber für die XmlReader-Methode ist es nicht so einfach. Sie liest auch den Titel, der mit M beginnt, und wählt nach langem Nachdenken keinen aus elegante Implementierung, also musste ich das tun:

Code

static List<Channel> testXmlReader2()
{
    var lstChannel = new List<Channel>();
    var reader = XmlReader.Create(xmlStream);
    int n = 0;Channel channel = null;
Search:
    while (reader.Read())
    {
        if (reader.Name == "item" && reader.NodeType == XmlNodeType.Element)
        {  
            while (reader.Read())
            {
                if (reader.Name == "item") break;
                if (reader.NodeType != XmlNodeType.Element) continue;
                switch (reader.Name)
                {
                    case "title":
                        var title = reader.ReadString();
                        if (title[0] != &#39;M&#39;) goto Search;          
                        n++;
                        if (n % 10 != 0) goto Search; 
                        channel = new Channel();
                        channel.Title = title;
                        break;
                    case "link":
                        channel.Link = reader.ReadString();
                        break;
                    case "description":
                        channel.Description = reader.ReadString();
                        break;
                    case "content":
                        channel.Content = reader.ReadString();
                        break;
                    case "pubDate":
                        channel.PubDate = reader.ReadString();
                        break;
                    case "author":
                        channel.Author = reader.ReadString();
                        break;
                    case "category":
                        channel.Category = reader.ReadString();
                        break;
                    default:
                        break;
                }
                lstChannel.Add(channel);
            }
        }
    }
    return lstChannel;
}
Nach dem Login kopieren

 Wie Sie sehen können, hat sich die Codestruktur erheblich geändert. Um eine bedingte Filterung durchzuführen, musste ich die lokale Variable n hinzufügen, die Initialisierung der Entitätsklasse anpassen und den Speicherort der Sammlungsanweisung hinzufügen. Ich war sogar gezwungen, die goto-Anweisung zu verwenden, die ich viele Jahre lang vergessen hatte springen (VB ist besser). Geschäftslogik dringt in die Implementierung von Codedetails ein. In Lao Zhaos Worten trifft ein Ausbruch grammatikalischer Geräusche auf das Gesicht.

Da die Operation sehr nahe an der untersten Ebene liegt, ist es schwierig, eine gute Methode zur Codeoptimierung auf Makroebene zu finden. Wenn die Filterbedingungen, also die Geschäftslogik, komplizierter sind, ist der Code völlig anders und die Verständlichkeit und Wartbarkeit ist wie ein Spiegel.

Vergleichen wir nun die Zeitleistung:

XmlDocment    26ms    
XPathNavigator    26ms    
XmlTextReader    20ms    
Xml Linq    28ms
Nach dem Login kopieren

Die Daten in den vier Methoden liegen nahe beieinander, der Zeitverbrauch von Document und Navigator ist erheblich gesunken und die Reader-Methode ist nicht gesunken viel, da es immer noch von Anfang an gelesen werden muss. Letztendlich kann die Reduzierung um 3 ms auf die Reduzierung des Aufwands für die Erstellung von Entitätsobjekten zurückgeführt werden. Noch seltsamer ist, dass sich die Linq-Methode nicht geändert hat und am Ende versagt hat.

Sie können verschiedene Abfragebedingungen testen. Es ist ersichtlich, dass jede dieser vier Methoden ihre eigene Leistungsgrenze hat, die mit der Größe der XML-Quelle zusammenhängt. Bei den ersten beiden Methoden hängt es beispielsweise von der Ausführungszeit der XmlDocument.Load-Methode ab. Auf meinem Computer dauert das Laden der XML-Datei 23 ms. Die Linq-Methode ist nicht unzerbrechlich. Wenn nur wenige Ergebnisse verarbeitet werden müssen, verkürzt sich die Ausführungszeit um 1 bis 2 Millisekunden.

Im Dokument- und Navigatormodus nimmt die Leistung mit zunehmender Datenmenge erheblich ab. Es ist leicht zu vermuten, dass das daran liegt, dass sie eine Menge nutzloser Objekte erzeugen. Wenn wir uns die Speichernutzung jeder Methode ansehen, können wir sehen, dass die Document-Methode etwa 23,3 MB Speicher beansprucht, während die Navigator-Methode nur etwa 22,9 MB beansprucht. Dies erklärt auch, warum die Leistung der Document-Methode nimmt deutlicher ab. Der Lesemodus ist vollständig mit Daten geladen und benötigt nur etwa 20,1 MB Speicher. Ohne den Overhead des Programmstarts selbst nimmt er im Vergleich zu den beiden vorherigen Methoden weniger als die Hälfte des Speichers ein. Die Linq-Methode bietet eine weitere erstaunliche Leistung in Bezug auf den Speicher und benötigt weniger als 500.000 mehr als die Reader-Methode.

Eine weitere Analyse führte zu einer weiteren Schlussfolgerung: Verwenden Sie XmlTextReader mit Vorsicht, es sei denn, es besteht ein besonderer Bedarf. Es ist schlecht auf Änderungen vorbereitet und fehleranfällig. Es wird dringend empfohlen, die Linq-Methode zu verwenden. Obwohl die Zeitleistung in einigen Fällen etwas geringer ist als die der Navigator-Methode, hat sich ihre hervorragende Speichernutzungsleistung als erste Wahl etabliert. Und ich glaube, dass Linq To XML in Zukunft noch leistungsfähiger sein wird.

Das Obige ist der Leistungsvergleich der XML-Datenlesemethoden (2). Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Chat -Befehle und wie man sie benutzt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Kann ich eine XML-Datei mit PowerPoint öffnen? Kann ich eine XML-Datei mit PowerPoint öffnen? Feb 19, 2024 pm 09:06 PM

Können XML-Dateien mit PPT geöffnet werden? XML, Extensible Markup Language (Extensible Markup Language), ist eine universelle Auszeichnungssprache, die häufig im Datenaustausch und in der Datenspeicherung verwendet wird. Im Vergleich zu HTML ist XML flexibler und kann eigene Tags und Datenstrukturen definieren, wodurch die Speicherung und der Austausch von Daten komfortabler und einheitlicher werden. PPT oder PowerPoint ist eine von Microsoft entwickelte Software zum Erstellen von Präsentationen. Es bietet eine umfassende Möglichkeit

Verwendung von Python zum Zusammenführen und Deduplizieren von XML-Daten Verwendung von Python zum Zusammenführen und Deduplizieren von XML-Daten Aug 07, 2023 am 11:33 AM

Verwenden von Python zum Zusammenführen und Deduplizieren von XML-Daten XML (eXtensibleMarkupLanguage) ist eine Auszeichnungssprache, die zum Speichern und Übertragen von Daten verwendet wird. Bei der Verarbeitung von XML-Daten müssen wir manchmal mehrere XML-Dateien zu einer zusammenführen oder doppelte Daten entfernen. In diesem Artikel wird erläutert, wie Sie mit Python die Zusammenführung und Deduplizierung von XML-Daten implementieren und entsprechende Codebeispiele angeben. 1. XML-Daten zusammenführen Wenn wir mehrere XML-Dateien haben, müssen wir sie zusammenführen

XML-Daten mit Python filtern und sortieren XML-Daten mit Python filtern und sortieren Aug 07, 2023 pm 04:17 PM

Implementieren des Filterns und Sortierens von XML-Daten mit Python Einführung: XML ist ein häufig verwendetes Datenaustauschformat, das Daten in Form von Tags und Attributen speichert. Bei der Verarbeitung von XML-Daten müssen wir die Daten häufig filtern und sortieren. Python bietet viele nützliche Tools und Bibliotheken zum Verarbeiten von XML-Daten. In diesem Artikel wird erläutert, wie Sie mit Python XML-Daten filtern und sortieren. Lesen der XML-Datei Bevor wir beginnen, müssen wir die XML-Datei lesen. Python verfügt über viele XML-Verarbeitungsbibliotheken.

Konvertieren Sie XML-Daten in Python in das CSV-Format Konvertieren Sie XML-Daten in Python in das CSV-Format Aug 11, 2023 pm 07:41 PM

Konvertieren Sie XML-Daten in Python in das CSV-Format. XML (ExtensibleMarkupLanguage) ist eine erweiterbare Auszeichnungssprache, die häufig zur Datenspeicherung und -übertragung verwendet wird. CSV (CommaSeparatedValues) ist ein durch Kommas getrenntes Textdateiformat, das häufig für den Datenimport und -export verwendet wird. Bei der Datenverarbeitung ist es manchmal erforderlich, XML-Daten zur einfachen Analyse und Verarbeitung in das CSV-Format zu konvertieren. Python ist mächtig

Importieren Sie XML-Daten mit PHP in die Datenbank Importieren Sie XML-Daten mit PHP in die Datenbank Aug 07, 2023 am 09:58 AM

Importieren von XML-Daten in die Datenbank mit PHP Einführung: Während der Entwicklung müssen wir häufig externe Daten zur weiteren Verarbeitung und Analyse in die Datenbank importieren. Als häufig verwendetes Datenaustauschformat wird XML häufig zum Speichern und Übertragen strukturierter Daten verwendet. In diesem Artikel wird erläutert, wie Sie mit PHP XML-Daten in eine Datenbank importieren. Schritt 1: XML-Datei analysieren Zuerst müssen wir die XML-Datei analysieren und die erforderlichen Daten extrahieren. PHP bietet mehrere Möglichkeiten zum Parsen von XML. Die am häufigsten verwendete davon ist die Verwendung von Simple

Python implementiert die Konvertierung zwischen XML und JSON Python implementiert die Konvertierung zwischen XML und JSON Aug 07, 2023 pm 07:10 PM

Python implementiert die Konvertierung zwischen XML und JSON. Einführung: Im täglichen Entwicklungsprozess müssen wir häufig Daten zwischen verschiedenen Formaten konvertieren. XML und JSON sind gängige Datenaustauschformate. In Python können wir verschiedene Bibliotheken zum Konvertieren zwischen XML und JSON verwenden. In diesem Artikel werden mehrere häufig verwendete Methoden mit Codebeispielen vorgestellt. 1. Um XML in Python in JSON zu konvertieren, können wir das Modul xml.etree.ElementTree verwenden

Behandeln von Fehlern und Ausnahmen in XML mit Python Behandeln von Fehlern und Ausnahmen in XML mit Python Aug 08, 2023 pm 12:25 PM

Behandeln von Fehlern und Ausnahmen in XML mit Python XML ist ein häufig verwendetes Datenformat zum Speichern und Darstellen strukturierter Daten. Wenn wir Python zum Verarbeiten von XML verwenden, können manchmal Fehler und Ausnahmen auftreten. In diesem Artikel werde ich die Verwendung von Python zur Behandlung von Fehlern und Ausnahmen in XML vorstellen und einige Beispielcodes als Referenz bereitstellen. Verwenden Sie Try-Exception-Anweisungen, um XML-Parsing-Fehler abzufangen. Wenn wir Python zum Parsen von XML verwenden, können manchmal Fehler auftreten

Python analysiert Sonderzeichen und Escape-Sequenzen in XML Python analysiert Sonderzeichen und Escape-Sequenzen in XML Aug 08, 2023 pm 12:46 PM

Python analysiert Sonderzeichen und Escape-Sequenzen in XML. XML (eXtensibleMarkupLanguage) ist ein häufig verwendetes Datenaustauschformat, das zum Übertragen und Speichern von Daten zwischen verschiedenen Systemen verwendet wird. Bei der Verarbeitung von XML-Dateien kommt es häufig vor, dass Sonderzeichen und Escape-Sequenzen enthalten sind, die zu Analysefehlern oder einer Fehlinterpretation der Daten führen können. Daher müssen wir beim Parsen von XML-Dateien mit Python verstehen, wie mit diesen Sonderzeichen und Escape-Sequenzen umgegangen wird. 1. Sonderzeichen und

See all articles