CoreyKaylor / Lightning.NET

.NET library for LMDB key-value store
Other
397 stars 82 forks source link

net7.0 & C# style improvements #158

Closed CoreyKaylor closed 1 year ago

CoreyKaylor commented 1 year ago

Summary of PR:

Are there other language features this library would benefit from that I missed?

I'm going to run the benchmarks out of curiosity to see the differences between net6.0, net7.0 (master), and net7.0 (net7-csharp-improvements)

CoreyKaylor commented 1 year ago

(master) net6.0 READ


BenchmarkDotNet=v0.12.1, OS=macOS 13.2 (22D49) [Darwin 22.3.0]
Apple M1 Max, 1 CPU, 10 logical and 10 physical cores
.NET Core SDK=7.0.102
  [Host]     : .NET Core 6.0.13 (CoreCLR 6.0.1322.58009, CoreFX 6.0.1322.58009), Arm64 RyuJIT
  DefaultJob : .NET Core 6.0.13 (CoreCLR 6.0.1322.58009, CoreFX 6.0.1322.58009), Arm64 RyuJIT
Method OpsPerTransaction ValueSize KeyOrder Mean Error StdDev Gen 0 Gen 1 Gen 2 Allocated
Read 1 8 Sequential 340.3 ns 2.02 ns 1.89 ns 0.1450 - - 304 B
Read 1 64 Sequential 338.7 ns 3.52 ns 3.30 ns 0.1450 - - 304 B
Read 1 256 Sequential 336.6 ns 3.42 ns 3.03 ns 0.1450 - - 304 B
Read 100 8 Sequential 8,187.4 ns 11.03 ns 10.31 ns 0.1373 - - 304 B
Read 100 64 Sequential 8,129.8 ns 15.42 ns 14.42 ns 0.1373 - - 304 B
Read 100 256 Sequential 8,566.1 ns 22.25 ns 18.58 ns 0.1373 - - 304 B
Read 1000 8 Sequential 116,099.3 ns 439.43 ns 389.55 ns 0.1221 - - 304 B
Read 1000 64 Sequential 124,493.6 ns 293.72 ns 274.75 ns - - - 304 B
Read 1000 256 Sequential 132,650.8 ns 308.18 ns 273.20 ns - - - 304 B
CoreyKaylor commented 1 year ago

(master) net6.0 WRITE


BenchmarkDotNet=v0.12.1, OS=macOS 13.2 (22D49) [Darwin 22.3.0]
Apple M1 Max, 1 CPU, 10 logical and 10 physical cores
.NET Core SDK=7.0.102
  [Host]     : .NET Core 6.0.13 (CoreCLR 6.0.1322.58009, CoreFX 6.0.1322.58009), Arm64 RyuJIT
  DefaultJob : .NET Core 6.0.13 (CoreCLR 6.0.1322.58009, CoreFX 6.0.1322.58009), Arm64 RyuJIT
Method OpsPerTransaction ValueSize KeyOrder Mean Error StdDev Gen 0 Gen 1 Gen 2 Allocated
Write 1 8 Sequential 50.64 μs 0.836 μs 0.741 μs 0.1221 - - 304 B
Write 1 64 Sequential 50.14 μs 0.226 μs 0.212 μs 0.1221 - - 304 B
Write 1 256 Sequential 50.33 μs 0.509 μs 0.425 μs 0.1221 - - 304 B
Write 100 8 Sequential 59.25 μs 0.324 μs 0.271 μs 0.1221 - - 304 B
Write 100 64 Sequential 60.11 μs 0.334 μs 0.296 μs 0.1221 - - 304 B
Write 100 256 Sequential 71.69 μs 0.870 μs 0.814 μs 0.1221 - - 304 B
Write 1000 8 Sequential 195.10 μs 0.589 μs 0.492 μs - - - 304 B
Write 1000 64 Sequential 232.84 μs 1.007 μs 0.893 μs - - - 304 B
Write 1000 256 Sequential 25.15 μs 0.030 μs 0.027 μs 0.1221 - - 304 B
CoreyKaylor commented 1 year ago

(master) net7.0 READ


BenchmarkDotNet=v0.12.1, OS=macOS 13.2 (22D49) [Darwin 22.3.0]
Apple M1 Max, 1 CPU, 10 logical and 10 physical cores
.NET Core SDK=7.0.102
  [Host]     : .NET Core 7.0.2 (CoreCLR 7.0.222.60605, CoreFX 7.0.222.60605), Arm64 RyuJIT
  DefaultJob : .NET Core 7.0.2 (CoreCLR 7.0.222.60605, CoreFX 7.0.222.60605), Arm64 RyuJIT
Method OpsPerTransaction ValueSize KeyOrder Mean Error StdDev Gen 0 Gen 1 Gen 2 Allocated
Read 1 8 Sequential 210.6 ns 0.71 ns 0.66 ns 0.0484 - - 304 B
Read 1 64 Sequential 207.3 ns 3.04 ns 2.85 ns 0.0484 - - 304 B
Read 1 256 Sequential 200.3 ns 2.29 ns 2.03 ns 0.0484 - - 304 B
Read 100 8 Sequential 8,171.7 ns 18.80 ns 17.59 ns 0.0458 - - 304 B
Read 100 64 Sequential 8,036.6 ns 17.22 ns 15.26 ns 0.0458 - - 304 B
Read 100 256 Sequential 8,593.7 ns 16.99 ns 14.19 ns 0.0458 - - 304 B
Read 1000 8 Sequential 116,029.8 ns 201.47 ns 188.45 ns - - - 304 B
Read 1000 64 Sequential 124,566.1 ns 320.33 ns 299.64 ns - - - 304 B
Read 1000 256 Sequential 132,605.0 ns 401.22 ns 375.30 ns - - - 304 B
CoreyKaylor commented 1 year ago

(master) net7.0 WRITE


BenchmarkDotNet=v0.12.1, OS=macOS 13.2 (22D49) [Darwin 22.3.0]
Apple M1 Max, 1 CPU, 10 logical and 10 physical cores
.NET Core SDK=7.0.102
  [Host]     : .NET Core 7.0.2 (CoreCLR 7.0.222.60605, CoreFX 7.0.222.60605), Arm64 RyuJIT
  DefaultJob : .NET Core 7.0.2 (CoreCLR 7.0.222.60605, CoreFX 7.0.222.60605), Arm64 RyuJIT
Method OpsPerTransaction ValueSize KeyOrder Mean Error StdDev Gen 0 Gen 1 Gen 2 Allocated
Write 1 8 Sequential 50.44 μs 0.442 μs 0.414 μs - - - 304 B
Write 1 64 Sequential 50.35 μs 0.261 μs 0.256 μs - - - 304 B
Write 1 256 Sequential 50.02 μs 0.354 μs 0.314 μs - - - 304 B
Write 100 8 Sequential 59.23 μs 0.506 μs 0.422 μs - - - 304 B
Write 100 64 Sequential 60.41 μs 1.147 μs 1.017 μs - - - 304 B
Write 100 256 Sequential 71.16 μs 0.668 μs 0.625 μs - - - 304 B
Write 1000 8 Sequential 193.64 μs 0.866 μs 0.723 μs - - - 304 B
Write 1000 64 Sequential 227.80 μs 0.838 μs 0.743 μs - - - 304 B
Write 1000 256 Sequential 24.33 μs 0.057 μs 0.050 μs 0.0305 - - 304 B
CoreyKaylor commented 1 year ago

(net7-csharp-improvements) net7.0 READ


BenchmarkDotNet=v0.12.1, OS=macOS 13.2 (22D49) [Darwin 22.3.0]
Apple M1 Max, 1 CPU, 10 logical and 10 physical cores
.NET Core SDK=7.0.102
  [Host]     : .NET Core 7.0.2 (CoreCLR 7.0.222.60605, CoreFX 7.0.222.60605), Arm64 RyuJIT
  DefaultJob : .NET Core 7.0.2 (CoreCLR 7.0.222.60605, CoreFX 7.0.222.60605), Arm64 RyuJIT
Method OpsPerTransaction ValueSize KeyOrder Mean Error StdDev Gen 0 Gen 1 Gen 2 Allocated
Read 1 8 Sequential 211.1 ns 1.32 ns 1.24 ns 0.0484 - - 304 B
Read 1 64 Sequential 205.5 ns 3.08 ns 2.88 ns 0.0484 - - 304 B
Read 1 256 Sequential 206.2 ns 2.88 ns 2.69 ns 0.0484 - - 304 B
Read 100 8 Sequential 7,944.8 ns 25.29 ns 19.74 ns 0.0458 - - 304 B
Read 100 64 Sequential 7,955.4 ns 19.95 ns 18.66 ns 0.0458 - - 304 B
Read 100 256 Sequential 8,559.4 ns 17.13 ns 16.02 ns 0.0458 - - 304 B
Read 1000 8 Sequential 115,440.9 ns 135.02 ns 119.70 ns - - - 304 B
Read 1000 64 Sequential 123,140.9 ns 588.45 ns 550.44 ns - - - 304 B
Read 1000 256 Sequential 131,738.7 ns 431.69 ns 382.68 ns - - - 304 B
CoreyKaylor commented 1 year ago

(net7-csharp-improvements) net7.0 WRITE


BenchmarkDotNet=v0.12.1, OS=macOS 13.2 (22D49) [Darwin 22.3.0]
Apple M1 Max, 1 CPU, 10 logical and 10 physical cores
.NET Core SDK=7.0.102
  [Host]     : .NET Core 7.0.2 (CoreCLR 7.0.222.60605, CoreFX 7.0.222.60605), Arm64 RyuJIT
  DefaultJob : .NET Core 7.0.2 (CoreCLR 7.0.222.60605, CoreFX 7.0.222.60605), Arm64 RyuJIT
Method OpsPerTransaction ValueSize KeyOrder Mean Error StdDev Gen 0 Gen 1 Gen 2 Allocated
Write 1 8 Sequential 50.71 μs 0.970 μs 0.908 μs - - - 304 B
Write 1 64 Sequential 50.25 μs 0.585 μs 0.489 μs - - - 304 B
Write 1 256 Sequential 50.40 μs 0.574 μs 0.448 μs - - - 304 B
Write 100 8 Sequential 59.59 μs 0.350 μs 0.292 μs - - - 304 B
Write 100 64 Sequential 60.01 μs 0.367 μs 0.325 μs - - - 304 B
Write 100 256 Sequential 71.29 μs 0.936 μs 0.830 μs - - - 304 B
Write 1000 8 Sequential 194.27 μs 3.038 μs 2.693 μs - - - 304 B
Write 1000 64 Sequential 232.27 μs 1.020 μs 0.852 μs - - - 304 B
Write 1000 256 Sequential 24.14 μs 0.042 μs 0.037 μs 0.0305 - - 304 B