sqlite.dll im Speicher halten



  • Servus,

    ich habe ewig keine DLLs mehr verwendet.

    Platform: Win XP mit Apache, Webanwendung über CGI in C geschrieben.

    Ich verwende als Datenbank SQLite und überlege, dessen DLL zu verwenden. Das
    bringt eigentlich ja nur etwas (zB verringte Startzeiten der Programme), wenn
    die DLL im Speicher bleibt. Soweit ich mich erinnern kann wird die ja "entladen"
    wenn sich das lezte sie benutzende Programm verabschiedet hat.

    Klar würde sie dann wieder aus dem Cache gestartet ...

    Gibt es da eine Möglichkeit, die DLL permanent im Speicher zu halten (ohne ein
    Dummyprogramm was die einfach nur so "benutzt") ?

    Merci im Vorraus und ertragreiche Keinachten. :xmas1:



  • Bau deine Anwendung doch "einfach" in FastCGI/SCGI um 😉



  • geeky schrieb:

    Bau deine Anwendung doch "einfach" in FastCGI/SCGI um 😉

    schon angedacht ... Ich weiß nur nicht was das bei einem Absturz so macht 😉



  • Scheppertreiber schrieb:

    Gibt es da eine Möglichkeit, die DLL permanent im Speicher zu halten (ohne ein
    Dummyprogramm was die einfach nur so "benutzt") ?

    Klar gibt es diese Möglichkeit: du tust einfach gar nix, und Windows behält die DLL für dich im Cache.

    Die Initialisierung der DLL für jeden Prozess kannst du sowieso nicht umgehen.

    Und was das im Speicher halten angeht...

    PE Images (wie EXE oder DLL Files) werden auch vom OS aus dem Speicher geworfen wenn der Speicher knapp wird. Und dann bei Bedarf wieder nachgeladen. Und so lange dem OS der Speicher nicht knapp wird, wird es häufig genutzte Files auch nicht aus dem Cache werfen.

    Heisst: wenn dein System nicht zu wenig Speicher hat, dann wird er die DLL auch nicht jedes mal neu laden. Und wenn es zu wenig Speicher hat, dann wird es auch nicht viel bringen das OS irgendwie zu "zwingen die DLL im Speicher zu halten". Weil es das sowieso nicht tut, wenn es der Meinung ist dass Speicher im Moment gerade dringender gebraucht wird.

    ps: FastCGI könnte trotzdem was bringen. Nämlich weil dann der ganze Initialisierungs-Overhead für den neuem Prozess wegfällt. Der ja aus wesentlich mehr besteht als bloss ein paar Files von der Disk zu laden (bzw. eben aus dem Cache zu kopieren).



  • Merci Husti,

    dann könnte ich das aber auch gleich als Apache-Modul schreiben - dann hätte ich
    den CGI-Overhead (bzw Fast-CGI) auch gleiche ausgemerzt.

    Die Server haben alle Win XP mit 4 GB, das .exe liegt bei knapp 1 MB (dessen
    Speicherbedarf auch so in der Kante). Die Tendenz geht immer mehr in Richtung
    dynamisches HTML (Ajax etc.) mit doch recht vielen Aufrufen auch durch Integration
    in SAP und so. Ich schätze mal, in 1 Jahr MUSS ich da etwas tun.

    FastCGI kann man da als Zwischenschritt zum Apache-Modul sehen oder ist da die
    Performance bis zum Start des Programms vergleichbar ? Ich habe das noch nie
    ausprobiert.

    Grüße Joe.


Anmelden zum Antworten