Reale Crashtests in der Automobilindustrie sind kostspielig und zeitaufwendig. Eigentlich nicht notwendige Tests (etwa weil beim ersten Versuch vergessen wurde, den Kopf des Crashtest-Dummies zu montieren) sollten möglichst vermieden werden.
Braucht man allerdings ein Jahr später die Ergebnisse nochmals, dann wird man den Test nicht nochmals nachvollziehen; stattdessen holt man aus dem Archiv die Ergebnisse des gewünschten Tests. Das erspart einem unnötigen Stress mit dem Chef und beschleunigt die aktuelle Arbeit enorm.
Ähnlich verhält es sich bei Programmen. Aufwendig berechnete (Zwischen-) Ergebnisse werden vorgehalten, damit man bei Bedarf wieder darauf zurückgreifen kann, ohne die komplette Berechnung wiederholen zu müssen. Diese Zwischenspeicher nennt man üblicherweise Cache. (
Die Hardware-Leute verwenden auch Caches, aber dort werden sie etwas anders verwendet. Ich beschränke mich hier auf die Software.)
Genauso wie in einem Archiv irgendwann mal alle Regale voll sind, kann man in ein Cache nur eine beschränkte Menge von Ergebnissen sichern. Während der fürs Archiv Zuständige anfängt, das "Unwichtige" oder "Veraltete" zu entfernen und damit Platz zu schaffen (und im Zweifelsfall laut jammert, weil er unwiederbringliche Kostbarkeiten entfernen muss), haben es die Software-Leute einfacher: Ihre Ergebnisse kann man im Regelfall mit einem gewissen maschinellen Aufwand wiederherstellen. (Sollte man es nicht wiederherstellen können, hat jemand Cache mit Backup verwechselt und sollte nachsitzen.) Daher verwendet man Heurisitiken, die eine Bewertung "ist im Moment unwichtig" vornehmen; die allereinfachste ist: Das Ergebniss, was man am längsten nicht mehr verwendet hat, fliegt raus (LRU =
least recently used). Wenn man dann im Cache auf eine Element sucht, daß einmal dort reingespeichert wurde, aber inzwischen herausgefallen ist, dann nennt sich das ganze ein Cache-Miss. Man muss in diesem Fall das Ganze nochmals zu Fuß nachrechnen und wird dann das Ergebniss wieder im Cache ablegen (und dafür was anderes rauswerfen).
Nützlich wird diese ganze Verwaltung aber nur, wenn man häufig genug im Cache die Ergebnisse findet, die man haben will (Cache-Hit). Ein schlechtes Szenario liegt beispielsweise vor, wenn man die Grösse des Caches aus dem Bauch dimensioniert und nicht weiss, wieviele Ergebnisse es überhaupt gibt und ob man nicht sehr viele Ergebnisse produziert, bis man man ein bereits berechnetes Ergebniss wieder nutzen könnte; in letzterem Fall ist Wahrscheinlicht groß, daß das Ergebniss inzwischen wieder herausgeworfen wurde.
Und in keinem Fall ist ein Cache nützlich, wenn man rein auf Verdacht Daten speichern muss, weil die eigentliche Berechnung schlecht programmiert ist und man die Performance "verbessern" muss. Dann mag das ein einem von zehn Anwendungsfällen vielleicht funktionieren, bei den anderen neun ist schlicht verschwenderter Speicher und deutet nur Optimierungsmöglichkeiten an, die faktisch keine sind.
(Die Automobilhersteller haben dieses Problem auch; sie haben zum einen den Aufwand gesenkt, einen Crashttest zur Datengewinnung durchzuführen: Sie haben das ganze in den Rechner verlagert und simulieren Crashtests mittels Supercomputer. Die realen Crashtests gibt es nur noch zur Verfizierung der am Rechner gewonnenen Daten. Und sie haben das Archiv auch in die Rechner verlagert. Speicherprobleme im Archiv sollten damit der Vergangenheit angehören.)