From 0240016c1642a5f534b44acf1c82bf555ad06fd5 Mon Sep 17 00:00:00 2001 From: Alex Peck Date: Thu, 14 Jul 2022 11:47:22 -0700 Subject: [PATCH 1/3] write to excel --- .../Wikibench/Analysis.cs | 18 ++++++++++++++++++ .../Wikibench/Runner.cs | 2 ++ 2 files changed, 20 insertions(+) diff --git a/BitFaster.Caching.HitRateAnalysis/Wikibench/Analysis.cs b/BitFaster.Caching.HitRateAnalysis/Wikibench/Analysis.cs index 0bc36941..68c45ad1 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; + + public double ClassicLruHitRate => this.classicLru.HitRatio; + 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); } } } From 5a7de635e9b1aa39fad9a1d41c563f682278a82b Mon Sep 17 00:00:00 2001 From: Alex Peck Date: Thu, 14 Jul 2022 11:52:45 -0700 Subject: [PATCH 2/3] add results --- BitFaster.Caching.HitRateAnalysis/results.wikibench.csv | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 BitFaster.Caching.HitRateAnalysis/results.wikibench.csv diff --git a/BitFaster.Caching.HitRateAnalysis/results.wikibench.csv b/BitFaster.Caching.HitRateAnalysis/results.wikibench.csv new file mode 100644 index 00000000..de435f1b --- /dev/null +++ b/BitFaster.Caching.HitRateAnalysis/results.wikibench.csv @@ -0,0 +1,9 @@ +CacheSize,ConcurrentLruHitRate,ClassicLruHitRate +25,0.3074854393579459,0.12339894258281078 +50,0.38541435017765774,0.21441939220308404 +75,0.4252123346830987,0.2784286871100062 +100,0.45102559165447403,0.32256096493638853 +125,0.4721936919103159,0.3530941454952625 +150,0.48687634020955906,0.37484624347754925 +175,0.49932971822611416,0.39100132865614856 +200,0.5083386468801666,0.4035904822418645 From 8534f8c06b913fcd799f30a3e8d6d821ed368fc8 Mon Sep 17 00:00:00 2001 From: Alex Peck Date: Thu, 14 Jul 2022 12:41:30 -0700 Subject: [PATCH 3/3] fix percentage output --- .../Wikibench/Analysis.cs | 4 ++-- .../results.wikibench.csv | 16 ++++++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/BitFaster.Caching.HitRateAnalysis/Wikibench/Analysis.cs b/BitFaster.Caching.HitRateAnalysis/Wikibench/Analysis.cs index 68c45ad1..417c774a 100644 --- a/BitFaster.Caching.HitRateAnalysis/Wikibench/Analysis.cs +++ b/BitFaster.Caching.HitRateAnalysis/Wikibench/Analysis.cs @@ -23,9 +23,9 @@ public Analysis(int cacheSize) public int CacheSize => this.concurrentLru.Capacity; - public double ConcurrentLruHitRate => this.concurrentLru.HitRatio; + public double ConcurrentLruHitRate => this.concurrentLru.HitRatio * 100; - public double ClassicLruHitRate => this.classicLru.HitRatio; + public double ClassicLruHitRate => this.classicLru.HitRatio * 100; public void TestUri(Uri uri) { diff --git a/BitFaster.Caching.HitRateAnalysis/results.wikibench.csv b/BitFaster.Caching.HitRateAnalysis/results.wikibench.csv index de435f1b..f8010efa 100644 --- a/BitFaster.Caching.HitRateAnalysis/results.wikibench.csv +++ b/BitFaster.Caching.HitRateAnalysis/results.wikibench.csv @@ -1,9 +1,9 @@ CacheSize,ConcurrentLruHitRate,ClassicLruHitRate -25,0.3074854393579459,0.12339894258281078 -50,0.38541435017765774,0.21441939220308404 -75,0.4252123346830987,0.2784286871100062 -100,0.45102559165447403,0.32256096493638853 -125,0.4721936919103159,0.3530941454952625 -150,0.48687634020955906,0.37484624347754925 -175,0.49932971822611416,0.39100132865614856 -200,0.5083386468801666,0.4035904822418645 +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