Skip to content

Commit

Permalink
Code cleanup in benchmarks and fixed formatting
Browse files Browse the repository at this point in the history
  • Loading branch information
JensSchadron committed Mar 4, 2020
1 parent c0ced57 commit 67c4d34
Show file tree
Hide file tree
Showing 12 changed files with 703 additions and 688 deletions.
110 changes: 59 additions & 51 deletions LiteDB.Benchmarks/Benchmarks/Deletion/DeletionBenchmark.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,68 +7,76 @@

namespace LiteDB.Benchmarks.Benchmarks.Deletion
{
[BenchmarkCategory(Constants.Categories.DELETION)]
public class DeletionBenchmark : BenchmarkBase
{
private List<FileMetaBase> data;
[BenchmarkCategory(Constants.Categories.DELETION)]
public class DeletionBenchmark : BenchmarkBase
{
private List<FileMetaBase> _data;
private ILiteCollection<FileMetaBase> _fileMetaCollection;

private ILiteCollection<FileMetaBase> _fileMetaCollection;
[GlobalSetup]
public void GlobalSetup()
{
File.Delete(DatabasePath);

[GlobalSetup]
public void GlobalSetup()
{
File.Delete(DatabasePath);
DatabaseInstance = new LiteDatabase(ConnectionString());
_fileMetaCollection = DatabaseInstance.GetCollection<FileMetaBase>();
_fileMetaCollection.EnsureIndex(file => file.IsFavorite);
_fileMetaCollection.EnsureIndex(file => file.ShouldBeShown);

DatabaseInstance = new LiteDatabase(ConnectionString());
_fileMetaCollection = DatabaseInstance.GetCollection<FileMetaBase>();
_fileMetaCollection.EnsureIndex(file => file.IsFavorite);
_fileMetaCollection.EnsureIndex(file => file.ShouldBeShown);
_data = FileMetaGenerator<FileMetaBase>.GenerateList(DatasetSize);
}

data = FileMetaGenerator<FileMetaBase>.GenerateList(DatasetSize);
}
[IterationSetup]
public void IterationSetup()
{
_fileMetaCollection.Insert(_data);
DatabaseInstance.Checkpoint();
}

[IterationSetup]
public void IterationSetup()
{
_fileMetaCollection.Insert(data);
DatabaseInstance.Checkpoint();
}
[Benchmark(Baseline = true)]
public int DeleteAllExpression()
{
var count = _fileMetaCollection.DeleteMany(_ => true);
DatabaseInstance.Checkpoint();
return count;
}

[Benchmark(Baseline = true)]
public int DeleteAllExpression()
{
var count = _fileMetaCollection.DeleteMany("1 = 1");
DatabaseInstance.Checkpoint();
return count;
}
[Benchmark]
public int DeleteAllBsonExpression()
{
var count = _fileMetaCollection.DeleteMany("1 = 1");
DatabaseInstance.Checkpoint();
return count;
}

[Benchmark]
public void DropCollectionAndRecreate()
{
const string collectionName = nameof(FileMetaBase);
[Benchmark]
public void DropCollectionAndRecreate()
{
const string collectionName = nameof(FileMetaBase);

var indexesCollection = DatabaseInstance.GetCollection("$indexes");
var droppedCollectionIndexes = indexesCollection.Query().Where(x => x["collection"] == collectionName && x["name"] != "_id").ToDocuments().ToList();
var indexesCollection = DatabaseInstance.GetCollection("$indexes");
var droppedCollectionIndexes = indexesCollection.Query().Where(x => x["collection"] == collectionName && x["name"] != "_id").ToDocuments().ToList();

DatabaseInstance.DropCollection(collectionName);
DatabaseInstance.DropCollection(collectionName);

foreach (var indexInfo in droppedCollectionIndexes)
{
DatabaseInstance.GetCollection(collectionName).EnsureIndex(indexInfo["name"], BsonExpression.Create(indexInfo["expression"]), indexInfo["unique"]);
}
foreach (var indexInfo in droppedCollectionIndexes)
{
DatabaseInstance.GetCollection(collectionName)
.EnsureIndex(indexInfo["name"], BsonExpression.Create(indexInfo["expression"]), indexInfo["unique"]);
}

DatabaseInstance.Checkpoint();
}
DatabaseInstance.Checkpoint();
}

[GlobalCleanup]
public void GlobalCleanup()
{
// Disposing logic
DatabaseInstance.DropCollection(nameof(FileMetaBase));
DatabaseInstance.Checkpoint();
DatabaseInstance.Dispose();
[GlobalCleanup]
public void GlobalCleanup()
{
// Disposing logic
DatabaseInstance?.Checkpoint();
DatabaseInstance?.Dispose();
DatabaseInstance = null;

File.Delete(DatabasePath);
}
}
File.Delete(DatabasePath);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,27 +5,27 @@

namespace LiteDB.Benchmarks.Benchmarks.Generator
{
/// <summary>
/// This benchmark is used purely for the sake of providing information
/// about how long and how many resources it takes to generate the test data.
/// </summary>
[BenchmarkCategory(Constants.Categories.DATA_GEN)]
public class FileMetaDataGenerationDatabaseBenchmark
{
// Benchmark params
[Params(10, 50, 100, 500, 1000, 5000, 10000)]
public int N;

[Benchmark]
public List<FileMetaBase> DataGeneration()
{
return FileMetaGenerator<FileMetaBase>.GenerateList(N);
}
/// <summary>
/// This benchmark is used purely for the sake of providing information
/// about how long and how many resources it takes to generate the test data.
/// </summary>
[BenchmarkCategory(Constants.Categories.DATA_GEN)]
public class FileMetaDataGenerationDatabaseBenchmark
{
// Benchmark params
[Params(10, 50, 100, 500, 1000, 5000, 10000)]
public int N;

[Benchmark]
public List<FileMetaWithExclusion> DataWithExclusionsGeneration()
{
return FileMetaGenerator<FileMetaWithExclusion>.GenerateList(N);
}
}
[Benchmark]
public List<FileMetaBase> DataGeneration()
{
return FileMetaGenerator<FileMetaBase>.GenerateList(N);
}

[Benchmark]
public List<FileMetaWithExclusion> DataWithExclusionsGeneration()
{
return FileMetaGenerator<FileMetaWithExclusion>.GenerateList(N);
}
}
}
130 changes: 65 additions & 65 deletions LiteDB.Benchmarks/Benchmarks/Insertion/InsertionBasicBenchmark.cs
Original file line number Diff line number Diff line change
@@ -1,87 +1,87 @@
using System.Collections.Generic;
using System.IO;
using System.Linq;
using BenchmarkDotNet.Attributes;
using LiteDB.Benchmarks.Models;
using LiteDB.Benchmarks.Models.Generators;

namespace LiteDB.Benchmarks.Benchmarks.Insertion
{
[BenchmarkCategory(Constants.Categories.INSERTION)]
public class InsertionBasicBenchmark : BenchmarkBase
{
private List<FileMetaBase> data;
[BenchmarkCategory(Constants.Categories.INSERTION)]
public class InsertionBasicBenchmark : BenchmarkBase
{
private List<FileMetaBase> _data;
private ILiteCollection<FileMetaBase> _fileMetaCollection;

private ILiteCollection<FileMetaBase> _fileMetaCollection { get; set; }
[GlobalSetup]
public void GlobalSetup()
{
File.Delete(DatabasePath);

[GlobalSetup]
public void GlobalSetup()
{
File.Delete(DatabasePath);
DatabaseInstance = new LiteDatabase(ConnectionString());
_fileMetaCollection = DatabaseInstance.GetCollection<FileMetaBase>();

DatabaseInstance = new LiteDatabase(ConnectionString());
_fileMetaCollection = DatabaseInstance.GetCollection<FileMetaBase>();
_data = FileMetaGenerator<FileMetaBase>.GenerateList(DatasetSize); // executed once per each N value
}

data = FileMetaGenerator<FileMetaBase>.GenerateList(DatasetSize); // executed once per each N value
}
[Benchmark(Baseline = true)]
public int Insertion()
{
var count = _fileMetaCollection.Insert(_data);
DatabaseInstance.Checkpoint();
return count;
}

[Benchmark(Baseline = true)]
public int Insertion()
{
var count = _fileMetaCollection.Insert(data);
DatabaseInstance.Checkpoint();
return count;
}
[Benchmark]
public void InsertionWithLoop()
{
// ReSharper disable once ForCanBeConvertedToForeach
for (var i = 0; i < _data.Count; i++)
{
_fileMetaCollection.Insert(_data[i]);
}

[Benchmark]
public void InsertionWithLoop()
{
// ReSharper disable once ForCanBeConvertedToForeach
for (var i = 0; i < data.Count; i++)
{
_fileMetaCollection.Insert(data[i]);
}
DatabaseInstance.Checkpoint();
}
DatabaseInstance.Checkpoint();
}

[Benchmark]
public int Upsertion()
{
var count = _fileMetaCollection.Upsert(data);
DatabaseInstance.Checkpoint();
return count;
}
[Benchmark]
public int Upsertion()
{
var count = _fileMetaCollection.Upsert(_data);
DatabaseInstance.Checkpoint();
return count;
}

[Benchmark]
public void UpsertionWithLoop()
{
// ReSharper disable once ForCanBeConvertedToForeach
for (var i = 0; i < data.Count; i++)
{
_fileMetaCollection.Upsert(data[i]);
}
DatabaseInstance.Checkpoint();
}
[Benchmark]
public void UpsertionWithLoop()
{
// ReSharper disable once ForCanBeConvertedToForeach
for (var i = 0; i < _data.Count; i++)
{
_fileMetaCollection.Upsert(_data[i]);
}

[IterationCleanup]
public void IterationCleanup()
{
const string collectionName = nameof(FileMetaBase);
DatabaseInstance.Checkpoint();
}

DatabaseInstance.DropCollection(collectionName);
[IterationCleanup]
public void IterationCleanup()
{
const string collectionName = nameof(FileMetaBase);

DatabaseInstance.Checkpoint();
DatabaseInstance.Rebuild();
}
DatabaseInstance.DropCollection(collectionName);

[GlobalCleanup]
public void GlobalCleanup()
{
DatabaseInstance.DropCollection(nameof(FileMetaBase));
DatabaseInstance.Checkpoint();
DatabaseInstance.Dispose();
DatabaseInstance.Checkpoint();
DatabaseInstance.Rebuild();
}

File.Delete(DatabasePath);
}
}
[GlobalCleanup]
public void GlobalCleanup()
{
DatabaseInstance?.Checkpoint();
DatabaseInstance?.Dispose();
DatabaseInstance = null;

File.Delete(DatabasePath);
}
}
}
Loading

0 comments on commit 67c4d34

Please sign in to comment.