diff --git a/BitFaster.Caching.HitRateAnalysis/Wikibench/Analysis.cs b/BitFaster.Caching.HitRateAnalysis/Wikibench/Analysis.cs index 0bc36941..417c774a 100644 --- a/BitFaster.Caching.HitRateAnalysis/Wikibench/Analysis.cs +++ b/BitFaster.Caching.HitRateAnalysis/Wikibench/Analysis.cs @@ -1,9 +1,12 @@ using System; using System.Collections.Generic; +using System.Globalization; +using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using BitFaster.Caching.Lru; +using CsvHelper; namespace BitFaster.Caching.HitRateAnalysis.Wikibench { @@ -18,6 +21,12 @@ public Analysis(int cacheSize) this.classicLru = new ClassicLru(1, cacheSize, EqualityComparer.Default); } + public int CacheSize => this.concurrentLru.Capacity; + + public double ConcurrentLruHitRate => this.concurrentLru.HitRatio * 100; + + public double ClassicLruHitRate => this.classicLru.HitRatio * 100; + public void TestUri(Uri uri) { this.concurrentLru.GetOrAdd(uri, u => 1); @@ -33,5 +42,14 @@ private static string FormatHits(double hitRate) { return string.Format("{0:N2}%", hitRate * 100.0); } + + public static void WriteToFile(string path, IEnumerable results) + { + using (var writer = new StreamWriter(path)) + using (var csv = new CsvWriter(writer, CultureInfo.InvariantCulture)) + { + csv.WriteRecords(results); + } + } } } diff --git a/BitFaster.Caching.HitRateAnalysis/Wikibench/Runner.cs b/BitFaster.Caching.HitRateAnalysis/Wikibench/Runner.cs index a52a0e04..cf831581 100644 --- a/BitFaster.Caching.HitRateAnalysis/Wikibench/Runner.cs +++ b/BitFaster.Caching.HitRateAnalysis/Wikibench/Runner.cs @@ -50,6 +50,8 @@ public static async Task Run() { a.Compare(); } + + Analysis.WriteToFile("results.wikibench.csv", analysis); } } } diff --git a/BitFaster.Caching.HitRateAnalysis/results.wikibench.csv b/BitFaster.Caching.HitRateAnalysis/results.wikibench.csv new file mode 100644 index 00000000..f8010efa --- /dev/null +++ b/BitFaster.Caching.HitRateAnalysis/results.wikibench.csv @@ -0,0 +1,9 @@ +CacheSize,ConcurrentLruHitRate,ClassicLruHitRate +25,30.748543935794594,12.339894258281078 +50,38.54143501776577,21.441939220308402 +75,42.52123346830987,27.84286871100062 +100,45.1025591654474,32.25609649363885 +125,47.21936919103159,35.30941454952625 +150,48.687634020955905,37.484624347754924 +175,49.932971822611414,39.10013286561485 +200,50.83386468801666,40.35904822418645