2009-06-25 5 views
2

Ich muss die Leistung einer kompakten Framework-Anwendung erhöhen, die eine SQLCe-Datenbank verwendet, um zwischengespeicherte Objekte zwischen Sitzungen der Anwendung persistent zu halten. Gegenwärtig werden Objekte in XML serialisiert und in einer SQLCe-Datenbank gespeichert, aber nachdem sie ein Profiling-Tool ausgeführt haben, scheint es einen erheblichen Aufwand zu geben. Ich habe darüber nachgedacht, dies in einen binären Serialisierer zu ändern, aber kennt jemand eine effizientere Möglichkeit, diese Objekte zum schnellen Abruf zu speichern? Vielen Dank.Was ist die effizienteste Methode zum Speichern von Objekten in einer SQLCe-Datenbank?

Update: Habe gerade herausgefunden, dass es keine binäre Serialisierung in einem kompakten Framework gibt, also keine Option.

+0

Wie machst du die Serialisierung zu XML? – tjjjohnson

Antwort

2

Zuerst müssen Sie charakterisieren, wo die Zeit verbracht wird. Ist es in der Serialisierung oder der eigentlichen Daten einfügen? Ohne das zu wissen, können Sie nicht effektiv versuchen, die Aktion zu verbessern. Und, FYI, proto-buf bietet binäre Serialisierung.

+0

Es ist die eigentliche Serialisierung selbst, die den Overhead verursacht, die Einsätze und Selects sind relativ schnell. Ich benutze den EQATEC Profiler (http://www.eqatec.com/tools/profiler), der die Ausführungszeiten verkürzt. Ich schaue mir Proto-Buf an, danke. – Charlie

+0

Also geht es wirklich nicht darum, wie man die Daten effizient speichert, sondern um die Serialisierung zu beschleunigen. – ctacke

+0

Nun, nicht unbedingt. Mein Problem ist, dass ich Daten zwischen den Sitzungen persistieren muss. Das Serialisieren der Objekte und das Einkleben in einen Datenspeicher ist eine Möglichkeit, aber ich habe nicht speziell nach der Serialisierung gefragt, weil die Leute vielleicht bessere Vorschläge haben. Ich fange an zu denken, dass die aktuelle Implementierung der falsche Weg ist, und vielleicht sollte es ein richtiges Schema in der DB geben, anstatt ein serialisiertes Blob zu speichern? – Charlie