Skip to content

Instantly share code, notes, and snippets.

@mbdavid
Created September 3, 2017 22:10
Show Gist options
  • Save mbdavid/de95d75f3655ddc49ebd3b16cabc16c3 to your computer and use it in GitHub Desktop.
Save mbdavid/de95d75f3655ddc49ebd3b16cabc16c3 to your computer and use it in GitHub Desktop.
Performance test for LiteDB query between asc/desc
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