33using System . Threading ;
44using System . Threading . Tasks ;
55using BenchmarkDotNet . Attributes ;
6- using CacheTower . Providers . FileSystem . Json ;
7- using CacheTower . Providers . FileSystem . Protobuf ;
6+ using CacheTower . Providers . FileSystem ;
7+ using CacheTower . Serializers . NewtonsoftJson ;
8+ using CacheTower . Serializers . Protobuf ;
9+ using CacheTower . Serializers . SystemTextJson ;
810using EasyCaching . Disk ;
911
1012namespace CacheTower . AlternativesBenchmark
@@ -13,17 +15,19 @@ public class CacheAlternatives_File_Benchmark : BaseBenchmark
1315 {
1416 private const string DirectoryPath = "CacheAlternatives/FileCache" ;
1517
16- private readonly CacheStack CacheTowerJson ;
18+ private readonly CacheStack CacheTowerNewtonsoftJson ;
19+ private readonly CacheStack CacheTowerSystemTextJson ;
1720 private readonly CacheStack CacheTowerProtobuf ;
1821 private DefaultDiskCachingProvider EasyCaching ;
1922
2023 public CacheAlternatives_File_Benchmark ( )
2124 {
22- CacheTowerJson = new CacheStack ( new [ ] { new JsonFileCacheLayer ( DirectoryPath ) } , Array . Empty < ICacheExtension > ( ) ) ;
23- CacheTowerProtobuf = new CacheStack ( new [ ] { new ProtobufFileCacheLayer ( DirectoryPath ) } , Array . Empty < ICacheExtension > ( ) ) ;
25+ CacheTowerNewtonsoftJson = new CacheStack ( new [ ] { new FileCacheLayer ( new ( DirectoryPath , NewtonsoftJsonCacheSerializer . Instance ) ) } , Array . Empty < ICacheExtension > ( ) ) ;
26+ CacheTowerSystemTextJson = new CacheStack ( new [ ] { new FileCacheLayer ( new ( DirectoryPath , SystemTextJsonCacheSerializer . Instance ) ) } , Array . Empty < ICacheExtension > ( ) ) ;
27+ CacheTowerProtobuf = new CacheStack ( new [ ] { new FileCacheLayer ( new ( DirectoryPath , ProtobufCacheSerializer . Instance ) ) } , Array . Empty < ICacheExtension > ( ) ) ;
2428 }
2529
26- private void CleanupFileSystem ( )
30+ private static void CleanupFileSystem ( )
2731 {
2832 var attempts = 0 ;
2933 while ( attempts < 5 )
@@ -61,16 +65,25 @@ public void Setup()
6165 }
6266
6367 [ Benchmark ( Baseline = true ) ]
64- public async Task < string > CacheTower_JsonFileCacheLayer ( )
68+ public async Task < string > CacheTower_FileCacheLayer_NewtonsoftJson ( )
6569 {
66- return await CacheTowerJson . GetOrSetAsync < string > ( "GetOrSet_TestKey" , ( old ) =>
70+ return await CacheTowerNewtonsoftJson . GetOrSetAsync < string > ( "GetOrSet_TestKey" , ( old ) =>
6771 {
6872 return Task . FromResult ( "Hello World" ) ;
6973 } , new CacheSettings ( TimeSpan . FromDays ( 1 ) , TimeSpan . FromDays ( 1 ) ) ) ;
7074 }
7175
7276 [ Benchmark ]
73- public async Task < string > CacheTower_ProtobufFileCacheLayer ( )
77+ public async Task < string > CacheTower_FileCacheLayer_SystemTextJson ( )
78+ {
79+ return await CacheTowerSystemTextJson . GetOrSetAsync < string > ( "GetOrSet_TestKey" , ( old ) =>
80+ {
81+ return Task . FromResult ( "Hello World" ) ;
82+ } , new CacheSettings ( TimeSpan . FromDays ( 1 ) , TimeSpan . FromDays ( 1 ) ) ) ;
83+ }
84+
85+ [ Benchmark ]
86+ public async Task < string > CacheTower_FileCacheLayer_Protobuf ( )
7487 {
7588 return await CacheTowerProtobuf . GetOrSetAsync < string > ( "GetOrSet_TestKey" , ( old ) =>
7689 {
0 commit comments