-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathExtractOneBenchmarks.cs
More file actions
102 lines (86 loc) · 3.22 KB
/
Copy pathExtractOneBenchmarks.cs
File metadata and controls
102 lines (86 loc) · 3.22 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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
using BenchmarkDotNet.Attributes;
using Raffinert.FuzzySharp.Extractor;
using Raffinert.FuzzySharp.SimilarityRatio.Scorer;
using Raffinert.FuzzySharp.SimilarityRatio.Scorer.Composite;
using Classic = FuzzySharp;
namespace Raffinert.FuzzySharp.Benchmarks;
[MemoryDiagnoser]
[RankColumn]
public class ExtractOneBenchmarks
{
private static readonly string[][] Events =
[
["chicago cubs vs new york mets", "CitiField", "2011-05-11", "8pm"],
["new york yankees vs boston red sox", "Fenway Park", "2011-05-11", "8pm"],
["atlanta braves vs pittsburgh pirates", "PNC Park", "2011-05-11", "8pm"]
];
private static readonly string[] Query = ["new york mets vs chicago cubs", "CitiField", "2017-03-19", "8pm"];
private ICachedRatioScorer _extractScorer = null!;
private ParallelOptions _parallelOptions = null!;
private ProcessPipeline _parallelPipeline;
private ProcessPipeline _cachedPipeline;
private ProcessPipeline _parallelCachedPipeline;
private CachedScorerProcessPipeline _acrossRunsCachedPipeline;
private CachedScorerProcessPipeline _acrossRunsParallelCachedPipeline;
[GlobalSetup]
public void GlobalSetup()
{
_extractScorer = new CachedWeightedRatioScorer(Query[0]);
_parallelOptions = new ParallelOptions
{
MaxDegreeOfParallelism = 4
};
_parallelPipeline = Process.Configure()
.Parallel(_parallelOptions)
.Build();
_cachedPipeline = Process.Configure()
.Cached()
.Build();
_parallelCachedPipeline = Process.Configure()
.Cached()
.Parallel(_parallelOptions)
.Build();
_acrossRunsCachedPipeline = Process.Configure()
.Cached(_extractScorer)
.Build();
_acrossRunsParallelCachedPipeline = Process.Configure()
.Cached(_extractScorer)
.Parallel(_parallelOptions)
.Build();
}
[Benchmark]
public ExtractedResult<string[]> ExtractOneBy()
{
return Process.ExtractOneBy(Query, Events, static strings => strings[0]);
}
[Benchmark]
public Classic.Extractor.ExtractedResult<string[]> ExtractOneByClassic()
{
return Classic.Process.ExtractOne(Query, Events, static strings => strings[0]);
}
[Benchmark]
public ExtractedResult<string[]> ExtractOneByParallel()
{
return _parallelPipeline.ExtractOneBy(Query, Events, static strings => strings[0]);
}
[Benchmark]
public ExtractedResult<string[]> ExtractOneByCached()
{
return _cachedPipeline.ExtractOneBy(Query, Events, static strings => strings[0]);
}
[Benchmark]
public ExtractedResult<string[]> ExtractOneByParallelCached()
{
return _parallelCachedPipeline.ExtractOneBy(Query, Events, static strings => strings[0]);
}
[Benchmark]
public ExtractedResult<string[]> ExtractOneByAcrossRunsCached()
{
return _acrossRunsCachedPipeline.ExtractOneBy(Events, static strings => strings[0]);
}
[Benchmark]
public ExtractedResult<string[]> ExtractOneByAcrossRunsParallelCached()
{
return _acrossRunsParallelCachedPipeline.ExtractOneBy(Events, static strings => strings[0]);
}
}