Bei einem Projekt, an dem ich gerade arbeite, gibt es eine Reihe von Zuständen, bei denen Berechnungen zuverlässig die gleichen Ergebnisse liefern (und keine Nebenwirkungen haben). Die offensichtliche Lösung wäre, Memoisierung für alle kostspieligen Funktionen zu verwenden.
Ich bräuchte eine Memoisierung, die mehr als einen Zustand behandelt (so dass ich einen Cache-Satz ungültig machen könnte, ohne einen anderen ungültig zu machen). Kennt jemand eine gute C-Bibliothek für diese Art von Dingen? (Beachten Sie, dass es sich nicht um C++ handeln kann, sondern um C.)
Ich habe mit einigen guten Implementierungen in Python gearbeitet, die Dekoratoren verwenden, um eine Reihe von verschiedenen Funktionen flexibel zu memoisieren. Ich frage mich irgendwie, ob es eine generische Bibliothek gibt, die ähnliche Dinge mit C tun könnte (obwohl wahrscheinlich mit expliziten Funktion Wrapping statt bequemer Syntax). Ich denke nur, es wäre dumm zu haben, um Caching zu jeder Funktion einzeln hinzufügen, wenn es ein gemeinsames genug Problem gibt es einige off-the-shelf-Lösungen für sie sein muss.
Die Merkmale, auf die ich achten würde, sind die folgenden:
- Kann Funktionen mit verschiedenen Arten von Eingaben und Ausgaben zwischenspeichern
- Verwaltet mehrere verschiedene Zwischenspeicher (so dass Sie kurzfristige und langfristige Zwischenspeicher haben können)
- Hat gute Funktionen zum Ungültigmachen von Caches
- Zur Verwendung durch Umhüllung von Funktionen gedacht, anstatt bestehende Funktionen zu ändern
Kennt jemand eine C-Implementierung, die alle oder die meisten dieser Anforderungen erfüllen kann?