2016-03-18 5 views
1

Ich habe einige Daten in einem Baum im Speicher gespeichert und ich regelmäßig den Baum mit Gurke in die Festplatte speichern. Kürzlich bemerkte ich, dass das Programm einen großen Speicher verwendet, dann überprüfte ich gespeicherte Pickle-Datei, es ist etwa 600M, dann schrieb ich ein anderes kleines Testprogramm den Baum wieder in den Speicher zu laden, und ich fand, dass es fast 10 Mal Speicher benötigen würde (5G) als die Größe auf der Festplatte, ist das normal? Und was ist der beste Weg, das zu vermeiden?Pickel und Python Datenstruktur

Antwort

2

Nein, das ist nicht normal. Ich vermute, dein Baum ist größer als du denkst. Schreibe etwas Code, um es laufen zu lassen und summiere den gesamten Speicherplatz (und zähle die Knoten).

Siehe memory size of Python data structure

Auch was genau fragen Sie? Sind Sie überrascht, dass eine 600M Datenstruktur auf der Festplatte 5G im Speicher ist. Das ist nicht besonders überraschend. Pickle komprimiert die Daten, sodass Sie erwarten, dass sie auf der Festplatte kleiner sind. Es ist um den Faktor 10 (ungefähr) kleiner, was ziemlich gut ist.

Wenn Sie von der Größe Ihrer eigenen Daten überrascht sind, ist das eine andere Sache.

+0

Ich bin überrascht, dass die Datei 600M auf der Festplatte ist, aber das Laden in den Speicher dauert 5G, Sie sagten, Gurke wird es komprimieren, das macht Sinn. Aber es wirft eine andere Frage auf, der Baum ist im Grunde ein Präfix Baum (Trie) für Speicher-URL (String) verwendet, sollte es nicht größer sein als direkt alle URLs in der Festplatte speichern, nicht wahr? Nach der Komprimierung kann es nur kleiner sein, aber manchmal ist der Baum größer als die URL-Listendatei (ich speichere keine anderen Dinge in der Baumstruktur). – 1a1a11a

+0

BTW, vielen Dank für Ihre Antwort, und der Link ist auch sehr nützlich. – 1a1a11a

+0

Bäume nehmen (ein wenig) mehr Platz ein als das Speichern von Listen. Bäume müssen alle Baumstrukturinformationen sowie die Informationen enthalten, die Sie speichern würden, wenn Sie nur eine Liste speichern. Bäume und andere Datenstrukturen stellen einen Kompromiss zwischen Zeit und Raum dar. Sie können Platz sparen auf Kosten der Zeit oder umgekehrt (Sie können Zeit sparen beim Speichern der Daten oder beim Abrufen). Es sollte keine enorme Menge mehr sein. –

Verwandte Themen