Skip to content

Commit 851b473

Browse files
committed
Refactor a bit
1 parent 1148bd4 commit 851b473

File tree

8 files changed

+34
-38
lines changed

8 files changed

+34
-38
lines changed

Src/FastData.Benchmarks/Benchmarks/AnalyzerBenchmarks.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public AnalyzerBenchmarks()
1818
_data = Enumerable.Range(1, 100).Select(_ => TestHelper.GenerateRandomString(rng, 50)).ToArray();
1919
StringProperties props = DataAnalyzer.GetStringProperties(_data);
2020

21-
_analyzer = new GPerfAnalyzer(_data.Length, props, new GPerfAnalyzerConfig(), new Simulator(new SimulatorConfig()), NullLogger<GPerfAnalyzer>.Instance);
21+
_analyzer = new GPerfAnalyzer(_data.Length, props, new GPerfAnalyzerConfig(), new Simulator(), NullLogger<GPerfAnalyzer>.Instance);
2222
}
2323

2424
[Benchmark]

Src/FastData.Benchmarks/Benchmarks/HashBenchmarks.cs renamed to Src/FastData.Benchmarks/Benchmarks/StringHashBenchmarks.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
namespace Genbox.FastData.Benchmarks.Benchmarks;
99

1010
[Orderer(SummaryOrderPolicy.FastestToSlowest)]
11-
public class HashBenchmarks
11+
public class StringHashBenchmarks
1212
{
1313
private string[] _array = null!;
1414

Src/FastData.Testbed/Tests/AnalysisTest.cs

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Diagnostics;
22
using System.Runtime.CompilerServices;
3+
using Genbox.FastData.Internal.Abstracts;
34
using Genbox.FastData.Internal.Analysis;
45
using Genbox.FastData.Internal.Analysis.Analyzers;
56
using Genbox.FastData.Internal.Analysis.Properties;
@@ -66,12 +67,9 @@ private static void RunBruteForce(string[] data, [CallerArgumentExpression(nameo
6667

6768
StringProperties props = DataAnalyzer.GetStringProperties(data);
6869
using SerilogLoggerFactory loggerFactory = new SerilogLoggerFactory(_logConf);
69-
BruteForceAnalyzer analyzer = new BruteForceAnalyzer(props, new BruteForceAnalyzerConfig(), new Simulator(new SimulatorConfig()), loggerFactory.CreateLogger<BruteForceAnalyzer>());
70-
analyzer.GetCandidates(data, candidate =>
71-
{
72-
PrintCandidate(candidate);
73-
return false;
74-
});
70+
BruteForceAnalyzer analyzer = new BruteForceAnalyzer(props, new BruteForceAnalyzerConfig(), new Simulator(), loggerFactory.CreateLogger<BruteForceAnalyzer>());
71+
PrintCandidate(GetCandidates(analyzer).OrderByDescending(x => x.Fitness).FirstOrDefault());
72+
7573
}
7674

7775
private static void RunGeneticAnalysis(string[] data, [CallerArgumentExpression(nameof(data))]string? source = null)
@@ -80,12 +78,9 @@ private static void RunGeneticAnalysis(string[] data, [CallerArgumentExpression(
8078

8179
StringProperties props = DataAnalyzer.GetStringProperties(data);
8280
using SerilogLoggerFactory loggerFactory = new SerilogLoggerFactory(_logConf);
83-
GeneticAnalyzer analyzer = new GeneticAnalyzer(props, new GeneticAnalyzerConfig(), new Simulator(new SimulatorConfig()), loggerFactory.CreateLogger<GeneticAnalyzer>());
84-
analyzer.GetCandidates(data, candidate =>
85-
{
86-
PrintCandidate(candidate);
87-
return false;
88-
});
81+
GeneticAnalyzer analyzer = new GeneticAnalyzer(props, new GeneticAnalyzerConfig(), new Simulator(), loggerFactory.CreateLogger<GeneticAnalyzer>());
82+
PrintCandidate(GetCandidates(analyzer).OrderByDescending(x => x.Fitness).FirstOrDefault());
83+
8984
}
9085

9186
private static void RunGPerfAnalysis(string[] data, [CallerArgumentExpression(nameof(data))]string? source = null)
@@ -94,17 +89,13 @@ private static void RunGPerfAnalysis(string[] data, [CallerArgumentExpression(na
9489

9590
StringProperties props = DataAnalyzer.GetStringProperties(data);
9691
using SerilogLoggerFactory loggerFactory = new SerilogLoggerFactory(_logConf);
97-
GPerfAnalyzer analyzer = new GPerfAnalyzer(data.Length, props, new GPerfAnalyzerConfig(), new Simulator(new SimulatorConfig()), loggerFactory.CreateLogger<GPerfAnalyzer>());
98-
analyzer.GetCandidates(data, candidate =>
99-
{
100-
PrintCandidate(candidate);
101-
return false;
102-
});
92+
GPerfAnalyzer analyzer = new GPerfAnalyzer(data.Length, props, new GPerfAnalyzerConfig(), new Simulator(), loggerFactory.CreateLogger<GPerfAnalyzer>());
93+
PrintCandidate(GetCandidates(analyzer).OrderByDescending(x => x.Fitness).FirstOrDefault());
10394
}
10495

105-
private static void Print(string[] data, string? source)
96+
private static void Print(string[] data, string? source, [CallerMemberName]string? member = null)
10697
{
107-
Console.WriteLine("###############");
98+
Console.WriteLine($"############### {member} ###############");
10899
Console.WriteLine(source + ": " + string.Join(", ", data.Take(5)));
109100
}
110101

@@ -155,8 +146,11 @@ private static string[] RunFunc(string[] str, double factor, Func<string, double
155146
return res;
156147
}
157148

158-
private static void PrintCandidate(Candidate candidate)
149+
private static void PrintCandidate(Candidate? candidate)
159150
{
151+
if (candidate == null)
152+
return;
153+
160154
Console.WriteLine();
161155
Console.WriteLine("#### Candidate ####");
162156
Console.WriteLine($"{nameof(candidate.Fitness)}: {candidate.Fitness}");
@@ -175,4 +169,15 @@ private static void PrintCandidate(Candidate candidate)
175169
// Console.WriteLine(candidate.StringHash.GetExpression().ToReadableString());
176170
Console.WriteLine(ExpressionHelper.Print(candidate.StringHash.GetExpression()));
177171
}
172+
173+
private static IEnumerable<Candidate> GetCandidates(IStringHashAnalyzer analyzer)
174+
{
175+
List<Candidate> candidates = new List<Candidate>();
176+
analyzer.GetCandidates(Data, candidate =>
177+
{
178+
candidates.Add(candidate);
179+
return true;
180+
});
181+
return candidates;
182+
}
178183
}

Src/FastData.Testbed/Tests/GPerfTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public static void ProduceOutputs(string path)
4242
ReadOnlySpan<string> data = File.ReadAllLines(file).AsSpan();
4343
StringProperties props = DataAnalyzer.GetStringProperties(data);
4444

45-
GPerfAnalyzer analyzer = new GPerfAnalyzer(data.Length, props, new GPerfAnalyzerConfig(), new Simulator(new SimulatorConfig()), factory.CreateLogger<GPerfAnalyzer>());
45+
GPerfAnalyzer analyzer = new GPerfAnalyzer(data.Length, props, new GPerfAnalyzerConfig(), new Simulator(), factory.CreateLogger<GPerfAnalyzer>());
4646

4747
// Candidate hashFunc = analyzer.GetCandidates(data).First(); //TODO: use
4848

Src/FastData/FastDataGenerator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,9 @@ private static ReadOnlySpan<T> Cast<T>(this ReadOnlySpan<object> data) where T :
175175
return newArr;
176176
}
177177

178-
private static IStringHash GetBestHash(string[] data, StringProperties props, SimulatorConfig simConf, ILoggerFactory factory)
178+
private static IStringHash GetBestHash(string[] data, StringProperties props, ILoggerFactory factory)
179179
{
180-
Simulator sim = new Simulator(simConf);
180+
Simulator sim = new Simulator();
181181

182182
//Run each of the analyzers
183183
List<Candidate> candidates = new List<Candidate>();

Src/FastData/Generators/StringHash/GPerfStringHash.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ private UnaryExpression GetPosition(Expression asso, Expression bytes, int pos)
109109

110110
public override string ToString() =>
111111
$"""
112-
Asso = {string.Join(", ", AssociationValues)}
112+
Asso = {string.Join(", ", AssociationValues.Where(x => x != AssociationValues[0]))}
113113
Alpha = {string.Join(", ", AlphaIncrements)}
114114
{nameof(Positions)} = {string.Join(", ", Positions)}
115115
{nameof(MinLen)} = {MinLen}

Src/FastData/Internal/Analysis/Analyzers/Simulator.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33

44
namespace Genbox.FastData.Internal.Analysis.Analyzers;
55

6-
internal sealed class Simulator(SimulatorConfig config)
6+
internal sealed class Simulator(int capacityFactor = 1)
77
{
88
private NoEqualityEmulator? _set;
99

1010
internal Candidate Run(ReadOnlySpan<string> data, IStringHash stringHash, Func<double>? extraFitness = null)
1111
{
12-
uint _capacity = (uint)(data.Length * config.CapacityFactor);
12+
uint _capacity = (uint)(data.Length * capacityFactor);
1313
_set ??= new NoEqualityEmulator(_capacity);
1414
_set.SetHash(stringHash.GetHashFunction());
1515

Src/FastData/SimulatorConfig.cs

Lines changed: 0 additions & 9 deletions
This file was deleted.

0 commit comments

Comments
 (0)