2016-07-05 15 views
1

Ich bin neu zu dapper (accually etwa zu verwenden). Ich habe mich gefragt, wie es funktioniert. Es speichert einige Ergebnisse, so dass es später schneller ist. Auf der GitHub-Seite sagt es nichts über die Freigabe von Speicher. Ich bin mir der Leistung dieses nugget bewusst, aber besteht keine Gefahr durch Speicherüberlauf oder etw.? Wird der zwischengespeicherte Speicher manchmal freigegeben?dapper.net release cached memory

+1

"Es speichert einige Ergebnisse, so dass es später schneller ist." - Nein, tut es nicht; Es speichert das Ergebnis der Meta-Programmierung für Ihre Abfrage und Ergebnisse ** Form **. Es speichert niemals tatsächliche Ergebnisse. –

Antwort

0

Die Webebene erreichte aufgrund des Umfangs der Abfragen häufig 100% CPU. Bei Hunderten von Aufrufen pro Sekunde verursachte der CPU-Overhead von LINQ zu SQL, der eine dynamische Methode für jeden Aufruf konstruierte, eine zu große Belastung für die Webserver.
Um dieses Problem zu beheben, speichert Dapper.Net Informationen über jede Abfrage. Dieses umfassende Caching hilft, Objekte aus Abfragen zu generieren, die doppelt so schnell sind wie LINQ to SQL. Gegenwärtig wird die Zwischenspeicherung von zwei ConcurrentDictionary-Objekten gehandhabt, die niemals gelöscht werden. In der Zukunft kann der Caching-Algorithmus einen LRU-Cache verwenden, um den Speicherdruck zu reduzieren.

+0

https://www.infoq.com/news/2011/04/dapper-released –

+1

Es kann eine große in der Beseitigung dieser Wörterbücher - es ist auf meiner Liste –

+0

Mai sein, aber ich werde dapper über andere ORM empfehlen –