/blog/perl


substr() in Perl
[125792 mal gelesen]
foreach in Perl
[115250 mal gelesen]
Arrays in Perl - Besonderheiten
[108002 mal gelesen]
open() - Dateien öffnen in Perl
[97048 mal gelesen]
split() in Perl - Zeichenketten teilen
[87147 mal gelesen]
chomp() in Perl
[83717 mal gelesen]
grep - Listen durchsuchen in Perl
[81030 mal gelesen]
push in Perl
[77563 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[60385 mal gelesen]
print in Perl
[49304 mal gelesen]


Arrays
Dateien
HTPC
Hashes
Leistungsoptimiert
PHP
Perl
RegEx
Schleifen
Script
Skalare
Sonstiges
System
Webserver
Zur Startseite


Freitag, 4.1.2008, 12:48:49 Uhr

Mein Cache-Modul für Perl - Fortsetzung



Nachdem ich ja hier bereits mein Cache-Modul vorgestellt habe und hier mein optimiertes Dateisystem, habe ich mein Cache-Modul überarbeitet.
Eingebaut ist nun das neue Dateisystem und neue Funktionen, die ich kurz vorstellen will:

exclusive()
Die "normale" Umgebung ist eine Multi-User-Umgebung. Deswegen wurde der Cache so konzipiert, daß parallele Zugriffe möglich sind, ohne daß es Datensalat gibt.
Also angenommenerweise drei Prozesse schreiben gleichzeitig in den Cache, muß die korrekte Speicherung der Daten gewährleistet werden. Dazu wird pro Zugriff ein Lock durchgeführt, und alle anderen Prozesse müssen warten.

Anders mit exclusive(): Das Script hat ab sofort den exclusiven Zugriff auf den Cache. Das bedeutet, daß alle anderen Scripte, die auf den Cache zugreifen wollen, eine Zwangspause einlegen müssen. Geregelt wird dies über einen systemweites Locking des gesamten Cache-Ordners.
So, dieses exclusive() bringt mehrere Vorteile:
Das Einzellocking pro Zugriff wird erspart, was schon mal etwas Zeit spart.

Zudem werden alle Stack-Dateien in den Rechnerspeicher eingelesen, so daß sie schnell verarbeitet werden können.
Außerdem wird die aktuelle Datei, in der neue Daten abgelegt werden sollen bzw. die zuletzt geöffnete Datei, ebenfalls in den Speicher eingelesen. So, und das bringt es so wirklich, wenn man viele Daten schreiben will: Denn anstatt jedesmal die Datei von der Platte einzulesen, zu ändern und zu schreiben, wird sie intern bereits bereitgehalten und nur geändert auf Platte geschrieben.

Dies bedeutet einen wesentlichen Geschwindigkeitsvorteil!

Allerdings bremst wie gesagt das exclusive() alle anderen parallel laufenden Prozesse aus, so daß man das exclusive() nur verwenden sollte, wenn man weiß was man tut, zum Beispiel wenn man auf einen Schlag sehr viele Daten schreiben will. Geschwindigkeitsvorteile um den Faktor 5 sind die Belohnung dafür...

Oder mal so in Zahlen ausgedrückt
100.000 Daten mit insgesamt 60 MB werden refreshed in 124 Sekunden, ohne exclusive() dauert das über 600 Sekunden...

Nun wird so mancher denken: Oh Gott, 600 Sekunden...
Aber ich sprach eben von 100.000 Datensätzen! EinDatensatz benötigt also nur 0.06 Sekunden... und das geht, denke ich. Oder eben 0.0124 mit exclusive()...

nonexclusive()
Schaltet den exclusive()-Modus wieder ab


nopurge()
Also, normalerweise wird bei jedem Lesezugriff auf den Cache die aktuelle Datei nach verfallenen Daten durchsucht.
Dies wird ab sofort verhindert.


activate_nopurge()
Aktiviert das automatische purging wieder.


Weitere Verbesserungen:
Die Müllabfuhr wurde beschleunigt, also das Löschen verfallener Datensätze.

Es wird bei der Initialisierung eine Liste von möglichen freien Datenfiles durchgeführt. Dies spart Zeit beim Schreiben neuer Daten.



Wichtig
Das neue Cache-Modul gibts hier zum download, allerdings muß ich sagen, daß es NICHT kompatibel zum alten Modul ist. Also vorher alte Daten komplett löschen!

Übrigens
Ich glaube, das Modul ist nun so weit fertig, sollten keine Fehler auftauchen, werde ich wohl nicht weiter daran arbeiten... Es hat schon Zeit genug benötigt, um den heutigen Stand zu erreichen...

Fortsetzungs-Fortsetzung
Ich habe nun doch noch zwei Funktionen eingebaut, und zwar ein expires und ein all_elements.

expires gibt die Zeit zurück, bis ein Element ungültig wird, all_elements gibt ein Array zurück, das alle gültigen Elements enthält.

Bugfixes
Eine Liste der Bugfixes finden Sie hier.

Thema: System Perl Script

Der Beitrag "Mein Cache-Modul für Perl - Fortsetzung" wurde 4416 mal gelesen.

Kommentar schreiben  Druckansicht  Seitenanfang 
Beurteilen 






 Zufällige Beiträge im /blog/perl

undef in Perl

Unicode mit Perl - Einfache (?) Anwendung

Dateien öffnen - Sicherheitsrisiko von Benutzereingaben

Cookies mit Perl

Elemente eines Arrays in einem Hash löschen - Die schnelle Methode

values() - Alle Werte eines Hashes ermitteln

exists() - Prüfen, ob ein Hash-Element existiert

Groß-Kleinschreibung in Regular Expression ändern

chop() in Perl - Letztes Zeichen eines Skalars entfernen



0.0203759670257568 sec. to build



...Blogsoftware in pure Perl - Powered by a lot of Coffee...


SSD-Festplatte - Wassn das???
Die Transliteration - Nur ein Zeichen in einem Skalar ersetzen
Select - Case in Perl
Windows 7 XP Mode – Wo finde ich den XP-Modus unter Windows 7?
Mac-Adresse beim Apple Macintosh herausfinden
SGN-Funktion für Perl
truncate - Dateigröße verändern in Perl
Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Von: Fabian
Kommentar:
Hallo zusammen,
ich suche schon etwas im Internet und bin bisher nicht fündig geworden.
Zum Beitrag


Von: Schorschel eastcoast
Kommentar:
Danke. Das hat mir weitergeholfen.
Zum Beitrag


Von: Jessica
Kommentar:
Kann man auch zwei Datein parallel einlesen?

Zum Beitrag


Von: Xtravaganz
Kommentar:
Für

Zum Beitrag


Von: Xtravaganz
Kommentar:
Für

Zum Beitrag



Gesamtverzeichnis
Februar 2010
Dezember 2009
Oktober 2009
Januar 2009
Dezember 2008
November 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006


Mister Wong

RSS-Feed

Heute ist der
24.5.2018

Es ist
12:57:09 Uhr

Ihre IP:
54.81.68.240

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
3653444


Webseiten vergleichen
Kalender mit Feiertagen - 2028
Links finden und testen
Menschliche Datumsangaben
IP zu Domain herausfinden
Time live in Datum umwandeln
Perl für Windows



Mo Di Mi Do Fr Sa So
123456
78910111213
14151617181920
21222324252627
28293031

Impressum