Created
September 3, 2017 22:10
-
-
Save mbdavid/de95d75f3655ddc49ebd3b16cabc16c3 to your computer and use it in GitHub Desktop.
Performance test for LiteDB query between asc/desc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using LiteDB; | |
using System; | |
using System.Collections.Generic; | |
using System.Diagnostics; | |
using System.IO; | |
using System.Linq; | |
using System.Text; | |
namespace TestNet40 | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
RunTest(20000, 2000, 8000, 8020); | |
RunTest(20000, 2000, 8000, 8020); | |
RunTest(20000, 2000, 8000, 8020); | |
Console.WriteLine(); | |
RunTest(20000, 2000, 5000, 6000); | |
RunTest(20000, 2000, 5000, 6000); | |
RunTest(20000, 2000, 5000, 6000); | |
Console.WriteLine("End"); | |
Console.ReadKey(); | |
} | |
static void RunTest(int count, int loop, int start, int end) | |
{ | |
var sInsert = new Stopwatch(); | |
var sAsc = new Stopwatch(); | |
var sDesc = new Stopwatch(); | |
var filename = @"c:\temp\perf.db"; | |
File.Delete(filename); | |
using (var db = new LiteDatabase("filename=" + filename)) | |
{ | |
var col = db.GetCollection("col"); | |
sInsert.Start(); | |
col.Insert(GetDocs(10000)); | |
sInsert.Stop(); | |
sAsc.Restart(); | |
for (var i = 0; i < loop; i++) | |
{ | |
var items = col.Find(Query.Between("_id", start, end)).ToArray(); | |
} | |
sAsc.Stop(); | |
sDesc.Restart(); | |
for (var i = 0; i < loop; i++) | |
{ | |
var items = col.Find(Query.Between("_id", start, end)).ToArray(); | |
} | |
sDesc.Stop(); | |
} | |
Console.WriteLine("Docs: {0}, Fetch: {1:0000}, Insert: {2:000000}, Asc: {3:000000}, Desc: {4:000000}", | |
count, | |
end - start, | |
sInsert.ElapsedMilliseconds, | |
sAsc.ElapsedMilliseconds, | |
sDesc.ElapsedMilliseconds); | |
} | |
static IEnumerable<BsonDocument> GetDocs(int count) | |
{ | |
for(var i = 1; i <= count; i++) | |
{ | |
yield return new BsonDocument | |
{ | |
["_id"] = i, | |
["name"] = "Name " + i | |
}; | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment