Jitbit.FastCache
1.0.1
See the version list below for details.
dotnet add package Jitbit.FastCache --version 1.0.1
NuGet\Install-Package Jitbit.FastCache -Version 1.0.1
<PackageReference Include="Jitbit.FastCache" Version="1.0.1" />
paket add Jitbit.FastCache --version 1.0.1
#r "nuget: Jitbit.FastCache, 1.0.1"
// Install Jitbit.FastCache as a Cake Addin #addin nuget:?package=Jitbit.FastCache&version=1.0.1 // Install Jitbit.FastCache as a Cake Tool #tool nuget:?package=Jitbit.FastCache&version=1.0.1
FastCache
6x-10x faster alternative to MemoryCache
TL;DR
Bascially it's just a ConcurrentDictionary
with expiration.
Why FastCache is better than System.Runtime.Caching.MemoryCache and Microsoft.Extensions.Caching.MemoryCache.
- 6X faster read times than MemeoryCache.
- 10x faster wites than MemoryCache
- Thread safe and atomic writes
- MemoryCache's come with performnce counters that can't be turned off
Usage
var cache = new FastCache<string, int>();
cache.AddOrUpdate("key", 42, TimeSpan.FromMinutes(1));
cache.TeyGet("key", out int value);
cache.GetOrAdd("key", k => 1024, TimeSpan.FromMilliseconds(100));
Tradeoffs
FastCache uses Environment.TickCount
which is 26x times faster tham DateTime.Now
. But Environment.TickCount
is limited to Int32
. Which means it reset to int.MinValue
once overflowed. In practice this means you cannot cache stuff for more than ~25 days (2.4 billion milliseconds).
Another tradeoff: MemoryCache watches the used memory, and evicts items once it senses memory pressure. FastCache does not do that it is up to you. It's just a dictionary.
Benchmarks
| Method | Mean | Error | StdDev | Gen0 | Allocated |
|--------------------- |----------:|----------:|---------:|-------:|----------:|
| FastCacheLookup | 67.15 ns | 2.582 ns | 0.142 ns | - | - |
| MemoryCacheLookup | 426.60 ns | 60.162 ns | 3.298 ns | 0.0200 | 128 B |
| FastCacheAddRemove | 99.97 ns | 12.040 ns | 0.660 ns | 0.0254 | 160 B |
| MemoryCacheAddRemove | 710.70 ns | 32.415 ns | 1.777 ns | 0.0515 | 328 B |
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Jitbit.FastCache:
Package | Downloads |
---|---|
NeoCaptcha.AspnetCore
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.1.0 | 5,012 | 11/5/2024 |
1.0.11 | 78,290 | 5/4/2024 |
1.0.10 | 93,832 | 9/3/2023 |
1.0.9 | 3,557 | 7/30/2023 |
1.0.8 | 5,630 | 6/16/2023 |
1.0.7 | 400 | 6/14/2023 |
1.0.6 | 8,205 | 4/4/2023 |
1.0.5 | 14,284 | 11/9/2022 |
1.0.4 | 19,536 | 9/22/2022 |
1.0.3 | 426 | 9/21/2022 |
1.0.2 | 442 | 9/20/2022 |
1.0.1 | 5,018 | 9/19/2022 |
1.0.0 | 659 | 9/19/2022 |