Ist es mit dem lxml.etree
python-Framework effizienter, XML direkt von einem Link zu einer Online-XML-Datei zu analysieren, oder ist es besser, ein anderes Framework (z. B. urllib2
) zu verwenden, um eine Zeichenfolge zurückzugeben und dann pars davon? Oder macht es überhaupt keinen Unterschied?
Methode 1 - Direkt von Link analysieren
%Vor%Methode 2 - Parse von String
%Vor%Oder gibt es eine effizientere Methode als diese, z. Speichern Sie das XML in eine .xml-Datei auf dem Desktop und parsen Sie dann von diesen?
Ich habe die beiden Methoden mit einem einfachen Timing-Rapper durchgeführt.
Methode 1 - Parsen Sie XML direkt aus dem Link
%Vor%Durchschnitt von 100 = 98,4035 ms
Methode 2 - Parsen Sie XML aus der von Urllib2 zurückgegebenen Zeichenfolge
%Vor%Durchschnitt von 100 = 286,9630 ms
So anekdotisch scheint es, dass die Verwendung von lxml, um direkt von der Verbindung zu analysieren, die schnellere Methode ist. Es ist nicht klar, ob es schneller wäre, große xml-Dokumente von der Festplatte herunterzuladen und dann zu parsen, aber vermutlich ist das parseXMLFromLink()
-Funktion immer noch schneller, da das urlib2 scheint, es sei denn, das Dokument ist riesig und die Parsing-Aufgabe intensiver verlangsamen Sie die zweite Funktion.
Ich habe das ein paar Mal durchgeführt und die Ergebnisse sind gleich geblieben.
Wenn Sie unter "effektiv" "effizient" verstehen, bin ich relativ sicher, dass Sie überhaupt keinen Unterschied zwischen den beiden sehen werden (es sei denn, ET.parse(link)
wird fürchterlich umgesetzt).
Der Grund ist, dass die Netzwerkzeit der wichtigste Teil beim Parsen einer Online-XML-Datei ist, viel länger als das Speichern der Datei auf der Festplatte oder das Speichern im Speicher und viel länger als das eigentliche Parsen / p>