Sinnvolles Autosave-Intervall für Notizen-Programm

uburoi

Lt. Commander
Registriert
Aug. 2008
Beiträge
1.306
Hallo zusammen!

Ich habe mir ein kleines Notizen-Programm geschrieben, das vor allem dazu dienen soll, Lektürenotizen festzuhalten und diese verschiedenen Kategorien zuzuordnen. Als "Extra" erlaubt das Programm (anders als andere Programme dieser Art) eine sehr einfache Eingabe von altgriechischem Text.

Das Programm speichert sämtliche Daten eigenständig in der jeweils aktuellen Datei, wenn man die Notiz wechselt (also bei jedem Klicken auf eine Notiz in der Auswahlliste, s. Anhang), und auch, wenn man das Programm beendet. Zudem gibt es eine Autosave-Funktion – und hier wäre meine Frage an erfahrenere Entwickler: Was wäre ein sinnvolles Intervall fürs Zwischenspeichern der Daten in der Datei? Einerseits soll die Autosave-Funktion CPU und Akku möglichst wenig belasten (ich arbeite immer am Laptop), andererseits sollen möglichst wenig Daten verlorengehen, sollte das System sich mal verabschieden (auch wenn ich selbst das bisher noch nicht erlebt habe). Momentan habe ich das Intervall auf einer Sekunde stehen – würdet ihr es auch so handhaben?

Vielen Dank im Voraus für eure Einschätzung!
Gruß Jens

Bildschirmfoto 2017-11-26 um 13.37.07.png
 
naja, 1 Sekunde ist bisschen offt oder?
Ausm Bauch raus würde ich so auf 10-15 Sekunden gehen. Falls da was abschmiert, könnte ich mich noch erinnern was ich zuletzt getippt habe.
 
Eine Sekunde O.o

Ich persönlich hab Autosave-Einstellungen meistens so auf 5-10 Minuten stehen.

Spricht was dagegen es so zu implementieren, dass es Veränderungen erkennt und dann speichert? Dann wäre eine Sekunde ja ok, da nur einmal gespeichert würde. Es wäre halt eine Art "Instant-Save", so, wie es z.B. bei Office-Online ist:
Du schreibst und 5 Sekunden später ist das gespeichert.

Aber jedesmal die gesamte Savefile neu zu schreiben, ist Unsinn (wenn es jetzt so ist)

Lg
 
Da habe ich mich wohl etwas ungenau ausgedrückt. Es wird jede Sekunde kontrolliert, ob es eine Änderung gab. Falls nicht, wird auch nicht gespeichert. (Die Datei ist eine SQLite-Datenbank; es wird auch nicht die gesamte Datenbank überschrieben, sondern das geänderte Notizen-Objekt überschreibt nur den jeweils relevanten Datenbank-Eintrag.)
 
Okay, das klingt schon wesentlich anders als dein Ursprungspost :)
Aber auch hier denke ich, sollte alle 10-15 Sekunden prüfen reichen.
 
Danke für die Einschätzung! :)
 
Lässt sich das nicht direkt nach Abschluss der Modifikationen triggern? Jedes Mal, wenn etwas geändert wird überprüfst du wie viel Zeit seid der letzten Sicherung vergangen ist und wenn das mehr als ein paar Sekunden her ist wird die Datenbank aktualisiert. Das hat den Vorteil, das dein Programm nichts macht wenn es keine Änderungen gibt.

Man könnte auch noch den umgekehrten Test machen und nicht direkt nach der Änderung speichern, sondern erst noch ein paar Sekunden warten ob noch was nach kommt.

All das außen vor. Hast du denn überhaupt Grund zu der Annahme, dass es sich auf deine Akkuleistung auswirkt, ob du z.B. alle 5 oder alle 10 Sekunden speicherst?
 
Zuletzt bearbeitet:
Ich habe das so gemacht: Wenn der Text geändert wird, wird ein entsprechendes Attribut der Klasse auf true gesetzt. Ein Timer kontrolliert im angegebenen Intervall, ob das Attribut true ist und sichert, falls ja, den Text (die Sicherungsmethode setzt das Attribut dann wieder auf false).
Wenn kein Text geändert wurde, macht der Timer also nichts, außer das Attribut zu kontrollieren, was für den Rechner keine Arbeit ist. Aber wenn gespeichert werden muss, holt sich die Methode den Rich Text als String, nimmt noch ein paar Modifikationen darin vor und schiebt ihn dann als angepassten Blob in die Datenbank. Wenn ich schnell tippe und oft gespeichert wird, macht sich das bei der CPU-Last schon bemerkbar. Es ist nicht dramatisch, aber ich denke, dass ich hier mit dem Speicherintervall schon für mehr "Ruhe" sorgen kann...
 
Zurück
Oben