-
Notifications
You must be signed in to change notification settings - Fork 275
Expand file tree
/
Copy pathIBenchmarkComparisonPolicy.cs
More file actions
40 lines (38 loc) · 1.29 KB
/
IBenchmarkComparisonPolicy.cs
File metadata and controls
40 lines (38 loc) · 1.29 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
using resultsComparer.Models;
namespace resultsComparer.Policies;
internal interface IBenchmarkComparisonPolicy : IEqualityComparer<BenchmarkMemory>
{
string GetErrorMessage(BenchmarkMemory? x, BenchmarkMemory? y);
string Name { get;}
public static IEnumerable<IBenchmarkComparisonPolicy> GetSelectedPolicies(string[] names)
{
if (names is [])
{
yield break;
}
var allPolicies = GetAllPolicies();
if (names is ["all"])
{
foreach (var policy in allPolicies)
{
yield return policy;
}
}
var indexedNames = names.ToHashSet(StringComparer.OrdinalIgnoreCase);
foreach (var policy in allPolicies.Where(x => indexedNames.Contains(x.Name)))
{
yield return policy;
}
}
public static IBenchmarkComparisonPolicy[] GetAllPolicies()
{
return [
IdenticalMemoryUsagePolicy.Instance,
ZeroPointOnePercentDifferenceMemoryUsagePolicy.Instance,
ZeroPointTwoPercentDifferenceMemoryUsagePolicy.Instance,
OnePercentDifferenceMemoryUsagePolicy.Instance,
TwoPercentDifferenceMemoryUsagePolicy.Instance,
FivePercentDifferenceMemoryUsagePolicy.Instance,
];
}
}