-
Notifications
You must be signed in to change notification settings - Fork 90
Expand file tree
/
Copy pathComparerDescriptor.cs
More file actions
53 lines (47 loc) · 2.25 KB
/
ComparerDescriptor.cs
File metadata and controls
53 lines (47 loc) · 2.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
using System.Collections.Generic;
using LightningDB.Comparers;
namespace LightningDB.Benchmarks;
/// <summary>
/// Wraps a comparer for BenchmarkDotNet parameterization with friendly display names.
/// </summary>
public readonly struct ComparerDescriptor
{
public string Name { get; }
public IComparer<MDBValue> Comparer { get; }
private ComparerDescriptor(string name, IComparer<MDBValue> comparer)
{
Name = name;
Comparer = comparer;
}
public override string ToString() => Name;
/// <summary>
/// All available comparers including Default (null = LMDB native).
/// </summary>
public static IEnumerable<ComparerDescriptor> All => new[]
{
new ComparerDescriptor("Default", null),
new ComparerDescriptor("Bitwise", BitwiseComparer.Instance),
new ComparerDescriptor("ReverseBitwise", ReverseBitwiseComparer.Instance),
new ComparerDescriptor("SignedInt", SignedIntegerComparer.Instance),
new ComparerDescriptor("ReverseSignedInt", ReverseSignedIntegerComparer.Instance),
new ComparerDescriptor("UnsignedInt", UnsignedIntegerComparer.Instance),
new ComparerDescriptor("ReverseUnsignedInt", ReverseUnsignedIntegerComparer.Instance),
new ComparerDescriptor("Utf8String", Utf8StringComparer.Instance),
new ComparerDescriptor("ReverseUtf8String", ReverseUtf8StringComparer.Instance),
new ComparerDescriptor("Length", LengthComparer.Instance),
new ComparerDescriptor("ReverseLength", ReverseLengthComparer.Instance),
new ComparerDescriptor("LengthOnly", LengthOnlyComparer.Instance),
new ComparerDescriptor("HashCode", HashCodeComparer.Instance),
};
/// <summary>
/// Integer comparers only (for focused integer key benchmarks).
/// </summary>
public static IEnumerable<ComparerDescriptor> IntegerComparers => new[]
{
new ComparerDescriptor("Default", null),
new ComparerDescriptor("SignedInt", SignedIntegerComparer.Instance),
new ComparerDescriptor("ReverseSignedInt", ReverseSignedIntegerComparer.Instance),
new ComparerDescriptor("UnsignedInt", UnsignedIntegerComparer.Instance),
new ComparerDescriptor("ReverseUnsignedInt", ReverseUnsignedIntegerComparer.Instance),
};
}