Seite 1 von 1
cPickle Alternative
Verfasst: Dienstag 25. Oktober 2005, 20:30
von t0m
Hiho,
ich wollte fragen ob es eine Alternative zu cPickle gibt? Es sollte möglichst schnell sein und Dictionaries abspeichern/laden können.
Ach ja, kein MySQL
dankö schonmal,
t0m
Verfasst: Dienstag 25. Oktober 2005, 20:37
von Leonidas
YAML, JSON, SQLObject (und die ganzen anderen ORMs), PyXO, XMarshaL, gnosis-Tools uvm.
Edit: Siehe auch die
passende Kategorie (serialization+python) im
Comprehensive Bookmark Archive
Edit: URL korrigiert.
Re: cPickle Alternative
Verfasst: Dienstag 25. Oktober 2005, 20:41
von gerold
t0m hat geschrieben:ich wollte fragen ob es eine Alternative zu cPickle gibt? Es sollte möglichst schnell sein und Dictionaries abspeichern/laden können.
Hi t0m!
Hier ein interessanter Auszug aus der Homepage von XmarshaL:
Code: Alles auswählen
Differences between XMarshaL and xml.marshal.generic
----------------------------------------------------
1) Speeeeed: the xml-string and substrings are constructed by string
interpolation where possible, not by joining string lists. This is
much faster for some types of objects like large sequences.
Dumping a large list object (x = range(100000)) with some different
methods shows the difference (my machine, Linux, Python 2.3b2):
Method : dump time, speed factor, string size
________________________________________________
marshal : 0.01 s, 0.01, 500005 bytes
cPickle : 0.09 s, 0.11, 788896 bytes
pickle : 0.93 s, 1.18, 788896 bytes
XMarshaL: 0.79 s, 1.00, 1589008 bytes
gnosis : 3.99 s, 5.05, 3989099 bytes
PyXML : 806.70 s, 1021.14, 1588951 bytes
Ok, there's no chance for XMarshaL to compare with marshal or
cPickle, but speed is comparable with pickle and even faster than
gnosis. And xml.marshal.generic seems to have a serious
performance problem!
http://www.dezentral.de/warp.html?http: ... /XMarshaL/
mfg
Gerold

Re: cPickle Alternative
Verfasst: Dienstag 25. Oktober 2005, 22:20
von BlackJack
t0m hat geschrieben:ich wollte fragen ob es eine Alternative zu cPickle gibt? Es sollte möglichst schnell sein und Dictionaries abspeichern/laden können.
Ich weiss, "Warum"-Fragen sind böse... aber warum suchst Du eine Alternative?
Verfasst: Mittwoch 26. Oktober 2005, 06:42
von jens
gibt:
no results for this query

Verfasst: Mittwoch 26. Oktober 2005, 18:26
von Leonidas
jens hat geschrieben:
gibt:
no results for this query

Ich habe
die URL nun oben korrigiert.
Re: cPickle Alternative
Verfasst: Freitag 28. Oktober 2005, 10:46
von t0m
Danke für die Antworten!
BlackJack hat geschrieben:t0m hat geschrieben:ich wollte fragen ob es eine Alternative zu cPickle gibt? Es sollte möglichst schnell sein und Dictionaries abspeichern/laden können.
Ich weiss, "Warum"-Fragen sind böse... aber warum suchst Du eine Alternative?
Nun ja, ich muss alle paar Minuten (oder sogar alle 30sek) ein relativ großes Dictionary abspeichern. Jetzt möchte ich natürlich das das so schnell wie möglich geht..
Ich werde mir mal XMarshaL angucken

Verfasst: Freitag 28. Oktober 2005, 10:49
von t0m
Ich meine natürlich marshal. Das ist ja in diesen kleinen Test ja das schnellste!
Re: cPickle Alternative
Verfasst: Freitag 28. Oktober 2005, 19:52
von Leonidas
t0m hat geschrieben:Nun ja, ich muss alle paar Minuten (oder sogar alle 30sek) ein relativ großes Dictionary abspeichern. Jetzt möchte ich natürlich das das so schnell wie möglich geht..
In diesem Falle wäre es glaube ich sinnvoller ein ORM zu nutzen: Vorteil: du Arbeitest mit Python-Datentypen (Klassen). Weiterer Vorteil: die Daten werden automatisch in der Datenbank gespeichert.
Verfasst: Samstag 29. Oktober 2005, 17:28
von t0m
ORM? Was ist das?
Verfasst: Samstag 29. Oktober 2005, 18:41
von Leonidas
t0m hat geschrieben:ORM? Was ist das?
Object-Relational-Mapping ist (vereinfacht) eine Technik, die es ermöglicht, automatisch Objekte (Klassen) so zu plätten, dass man sie in relationalen Datenbanken speichern kann.
SQLObject 0.7 Doku hat geschrieben:It allows you to translate RDBMS table rows into Python objects, and manipulate those objects to transparently manipulate the database.
Verfasst: Samstag 29. Oktober 2005, 20:40
von BlackJack
Irgenwie glaube ich nicht so recht daran, dass so ein ORM wesentlich schneller ist als `pickle` da ein ORM grundsätzlich die gleiche Arbeit leisten muss plus Aufbereitung der Daten für die Datenbank und Übermittlung an selbige. An der Stelle "dump"t `pickle` die Daten einfach in eine Datei.
Hat sich durch Messen eigentlich überhaupt schon herausgestellt das `pickle` für die Aufgabe zu langsam ist? Oder ist das nur eine Vermutung?
Verfasst: Sonntag 30. Oktober 2005, 13:14
von Leonidas
BlackJack hat geschrieben:Irgenwie glaube ich nicht so recht daran, dass so ein ORM wesentlich schneller ist als `pickle` da ein ORM grundsätzlich die gleiche Arbeit leisten muss plus Aufbereitung der Daten für die Datenbank und Übermittlung an selbige. An der Stelle "dump"t `pickle` die Daten einfach in eine Datei.
Nein, ein ORM ist sicherlich nicht schneller als pickle.
Jedoch kann man auf die Datenbank auch einfach aus anderen, nicht so tollen Programmiersprachen zugreifen, was bei pickle nicht so einfach ist. Dafür gibt es dann aber auch Alternativen wie XMarshaL, die die Klassen in XML Dateien dumpen.
Verfasst: Sonntag 30. Oktober 2005, 23:29
von BlackJack
Aber schneller als `cPickle` war doch eine Anforderung.
Verfasst: Mittwoch 2. November 2005, 17:53
von Leonidas
BlackJack hat geschrieben:Aber schneller als `cPickle` war doch eine Anforderung.
Er hat im ersten post gesagt, dass es moeglichst schnell sein soll - dass es schneller als cPickle sein
muss habe ich dort nicht rausgelesen.
