Ich denke die beste Antwort ist, dass es darauf ankommt. Nach meiner Erfahrung gibt es viele Faktoren, die bei der Auswahl von Caching-Algorithmen eine Rolle spielen.
Zu berücksichtigende Faktoren
- Balance lesen / schreiben. (Wie viel Prozent der Zugriffe werden gelesen oder geschrieben?)
- Menge an Cache.
- Medientyp hinter dem Cache. (Sind sie langsame SATA-Laufwerke oder schnelle SSD-Laufwerke?)
- Hits vs Misses. (Wie oft werden Dinge umgeschrieben oder neu gelesen?)
- Durchschnittliche Zugriffsgröße (Hiermit legen Sie die Seitengröße fest.)
- Wie teuer sind Lese- und Schreibvorgänge?
Wenn Sie alle verschiedenen Faktoren berücksichtigt haben, müssen Sie einen Cache-Algorithmus finden, der dies am besten handhabt. Angenommen, Sie haben eine Anwendung, in der viele Schreibvorgänge, einige Schreibvorgänge, Lesevorgänge kürzlich geschriebener Daten und eine Art sich drehender Datenträger ausgeführt werden. In diesem Fall möchten Sie eine Art Hybrid-Caching-Algorithmus. Um mit den Schreibdaten umzugehen, benötigen Sie möglicherweise WOW (Wise Order of Writes) und einen LRU-Algorithmus für Daten, die von der Festplatte gelesen wurden. Der Grund dafür ist, dass Plattenzugriffe sehr teuer sind und der WOW-Algorithmus das Schreiben von Daten effizienter macht und die LRU Daten, auf die häufig zugegriffen wird, immer im Cache hält.
Angenommen, Sie haben SSD-Festplatten mit sehr schneller Zugriffszeit, dann möchten Sie Ihre Wahl möglicherweise auf den LRU-Algorithmus ausrichten, da die Festplattenzugriffe relativ kostengünstig sind.
Ich möchte also wirklich sagen, dass es keine "beste" Antwort gibt. Die beste Antwort ist, die für Sie zutreffenden Faktoren zu kennen und einen Algorithmus zu wählen, der sie am besten handhabt.
So finden Sie den Algorithmus für Sie
Profilieren Sie Ihr System. Dies beinhaltet normalerweise das Hinzufügen von Code, um Statistiken für Speicherzugriffe zu führen. Durch die Profilerstellung können Sie sehen, welche Faktoren für Sie am wichtigsten sind.
In der Vergangenheit habe ich Code hinzugefügt, um alle Speicherzugriffe über einen bestimmten Zeitraum nachzuverfolgen. Dann suche ich später nach Mustern. Ich suche nach erneutem Lesen, erneutem Schreiben, sequenziellem Zugriff, wahlfreiem Zugriff usw.
Sobald Sie wichtige Dinge identifiziert haben, müssen Sie sich alle verschiedenen Arten von Caching-Algorithmen ansehen, um herauszufinden, welche Dinge am besten funktionieren.