2017-07-02 3 views
0

Ich habe einige automatisierte Tests, die SQLite.Net-PCL als Backing Store verwenden. Ich fand, dass stattdessen eine tatsächliche Datei zu verwenden, können Sie passieren in „: memory:“ als Pfad für die Verbindungszeichenfolge, eine In-Memory-Datenbank wie so zu erstellen:SQLite.NET In-Memory (: Speicher :) Datenbank VIEL langsamer als dateibasierte Datenbank

public class MyRepositoryService : SQLiteAsyncConnection 
{ 
    public MyRepositoryService() 
     : base(() => new SQLiteConnectionWithLock(
       new SQLitePlatformGeneric(), 
       new SQLiteConnectionString(
        ":memory:", 
        false) 
       )) 
    { 
    } 
} 

Zu meiner großen Überraschung, dies ist viel langsamer als mit einer normalen Datei. Ein Test, der ~ 100ms in einer Datei dauert, dauert 1 Minute mit In-Memory. Warum?

Nicht nur das, sondern mehrere meiner Tests plötzlich versagt beginnen, wenn ich auf die In-Memory-Datenbank wechseln - die meisten scheinen nie einen File- verwenden

zu den Tabellen bezogen zu werden

Bin ich wirklich gezwungen erstellt werden Datenbank für meine Unittests?

Antwort

0

Eine In-Memory-Datenbank verschwindet, wenn die Verbindung geschlossen wird.

So erstellt jeder Test eine neue Datenbank und muss alle Tabellen neu erstellen.

+0

Ich glaube nicht, dass dies die Ursache für die langsame Leistung ist. Ich lösche und neu erstellen Sie die dateibasierte Datenbank für jeden Test – user1202032

Verwandte Themen