Buchhaltungsprogramm

  • Original von gritsch
    ICh bevorzuge immer noch SQLite zu verwenden und basta. da braucht man kein extra framework dazu! Vorteil wenn man sichs selbst anpasst ist die geschwindigkeit! Ich lese zb eine 18 MB Datenbank innerhalb von 5 Sekunden in den Speicher und erstelle die dazugehörigen objekte. Versuch das mal mit normalen SQL-Abfragen (hatte ich am anfang und das würde über eine minute dauern...)

    Wieso soll das ueber SQL langsamer sein?
    SQLite uebersetzt SQL nur und benutzt dann interne Funktionen und das parsen dauert sich nicht so lange. Es sei den, Du hast wilde WHEN Klauseln oder sonstige Wilde Sachen wie verschachtelte SELECTs.

    Uebrigens ist ein "normales" Kompilat von SQLite nicht Netzwerk tauglich. Nur die Apple Version (die bei Tiger dabei ist) kann das. Dafuer hat Apple nen extra Patch verwendet.

    Beste Gruesse,
    Manfred
  • Original von asrael
    Original von thomas13
    Wollte eigentlich gar nicht so viel Resonanz auf mein "Tigermeckern" haben.

    Sorry, war nicht so gemeint.
    Beste Gruesse,
    Manfred


    Ich meinte natürlich schon SQL aber eben kein Framework, denn die frameworks liefern mit als ergebnis einer query zb ein NSArray mit allen rows und für jede row ein dictionary. Da spar ich mir liebr das ganze und mach mir gleich meine eignen objekte draus die ich dann verwende und nicht zuerst sowas zeit- und speicherfressendes!

    Ja, dass es nicht übers netzwerk funktioniert hab ich mitbekommen. Von dem Apple-Patch wusste ich jedoch nix. Ist der irgendwie öffentlich oder macht da apple wieder mal auf geheim (müsstens doch veröffentlichen wegen Lizenz oder?)

    danke
  • Original von gritsch
    Ja, dass es nicht übers netzwerk funktioniert hab ich mitbekommen. Von dem Apple-Patch wusste ich jedoch nix. Ist der irgendwie öffentlich oder macht da apple wieder mal auf geheim (müsstens doch veröffentlichen wegen Lizenz oder?)

    Keine Ahnung, hab mich noch nicht drum gekuemmert. Obwohl ich es auch gebrauchen koennte.
    SQLite ist unter LGPL, da muessen sie es glaub ich nicht veroeffentlichen, oder?

    Manfred
  • Naja, ich habe in meinen Versuchen für das Postgres-Framework mal ein _kleines_ bisschen herumgespielt.

    NSArray ableiten, -count und -objectAtIndex: überschreiben und dann jeweils den Datensatz erst zu dem Zeitpunkt in den Speichher des Frameworks holen, in denen er benutzt wird. Inn erster Näherung habe ich das aber erst einmal genau so gemacht, dass ich auch alles lud.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • das wäre dann auch noch viiiiiiiiiiiel zu langsam!

    denn dann müsstest du immer noch sowas machen SELECT * FROM xy WHERE id=z;

    da geht es bei mir viel schneller wenn ich das so mache:

    SELECT * FROM table1;

    und dann bei jeder row die er mir gibt gleich das objekt erstellen und fertig ist - wenn es was schnelleres/besseres gibt dann lass es mich wissen ;)
  • Original von Tom9811
    Naja, ich habe in meinen Versuchen für das Postgres-Framework mal ein _kleines_ bisschen herumgespielt.

    NSArray ableiten, -count und -objectAtIndex: überschreiben und dann jeweils den Datensatz erst zu dem Zeitpunkt in den Speichher des Frameworks holen, in denen er benutzt wird. Inn erster Näherung habe ich das aber erst einmal genau so gemacht, dass ich auch alles lud.

    Gut, aber erst bei bedarf laden dauert laenger, als wenn man alles auf einen Rutsch laedt.
    Meinetwegen brauchts etwas mehr Speicher, dafuer isses sehr wahrscheinlich schneller, oder?


    Manfred
  • Original von asrael
    Original von Tom9811
    Naja, ich habe in meinen Versuchen für das Postgres-Framework mal ein _kleines_ bisschen herumgespielt.

    NSArray ableiten, -count und -objectAtIndex: überschreiben und dann jeweils den Datensatz erst zu dem Zeitpunkt in den Speichher des Frameworks holen, in denen er benutzt wird. Inn erster Näherung habe ich das aber erst einmal genau so gemacht, dass ich auch alles lud.

    Gut, aber erst bei bedarf laden dauert laenger, als wenn man alles auf einen Rutsch laedt.
    Meinetwegen brauchts etwas mehr Speicher, dafuer isses sehr wahrscheinlich schneller, oder?
    Manfred


    Ja, so ist es!
  • Das hängt ja davon ab, was du machst. Stell dir einfach vor, dass das ganze in einem NSTableView landet. Jetzt hast du bei deiner Abfrage "Alle Buchungen" etwa 3727864827346 Treffer, von denen du 17 auf dem Schirm siehst. Nicht, weil du die Abfrage eingeschränkt hast, sondern weilo nur 17 auf den Schirm passen. (Vorhanden sind schon alle.)

    Man nennt das Lazy Technology und es wird von Cocoa/OS X an alllen Ecken und Enden implementiert. Schonmal in der Vorschau die Klappe aufgemacht und gescrollt, wenn ein PDF mehr als 5 Seiten hat? Es wäre auch traurig, wenn beim Laden des PDF sämtliche Seiten gerendert würden, auch wenn ich nur das Deckblatt oder Inhaltsverzeichnis neu drucken will.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Klar kann man abhängig von der Systemumegbung einen Prefetch machen. Es spricht schließlich ganz viel dafür, dass nach dem Zugriff auf das Element 0 ein Zugriff auf das Element 1 erfolgt. Methoden für derlei Vorhersagen sind in der Informatik ausreichend beschrieben. Ich würde hier soagr die "Dumm fickt gut"-Variante nehmen und einfach bei einem Zugrifff N Elemente laden. Richtig schön macht es natürlich, wenn man die späteren Hits beobachtet und nach und nach bessere Vorhersagen treffen kann.
    Es hat noch nie etwas gefunzt. To tear down the Wall would be a Werror!
    25.06.2016: [Swift] gehört zu meinen *Favorite Tags* auf SO. In welcher Bedeutung von "favorite"?
  • Original von Michael
    Original von asrael
    SQLite ist unter LGPL, da muessen sie es glaub ich nicht veroeffentlichen, oder?

    Code, der eine LPGL-Library benutzt muss nicht veröffentlicht werden. Code, der die LGPL-Library verändert muss veröffentlicht werden.

    Michael


    und ein Patch verändert die library - also müsste apple den patch veröffentlichen - richtg?
  • Original von asrael
    Gut, aber erst bei bedarf laden dauert laenger, als wenn man alles auf einen Rutsch laedt.
    Meinetwegen brauchts etwas mehr Speicher, dafuer isses sehr wahrscheinlich schneller, oder?

    Kommt drauf an. Wenn der Rechner dadurch swappen muss, kehrt sich das eher ins Gegenteil um. Weil dann muss plötzlich statt nur Daten nach zu laden, auch noch zusätzlich auf Platte ausgelagert werden. Heutzutage läuft kein Programm mehr alleine auf einem Rechner.

    Michael