SceneGate / Ekona

.NET implementation of DS and DSi file formats
https://scenegate.github.io/Ekona/
MIT License
25 stars 1 forks source link

:bug: :racehorse: Fix ROM generation on specific stream and improve performance #22

Closed pleonex closed 2 years ago

pleonex commented 2 years ago

Description

Performance results


BenchmarkDotNet=v0.13.1, OS=fedora 34
Intel Core i7-4720HQ CPU 2.60GHz (Haswell), 1 CPU, 8 logical and 4 physical cores
.NET SDK=6.0.103
  [Host]     : .NET 6.0.3 (6.0.322.16001), X64 RyuJIT
  DefaultJob : .NET 6.0.3 (6.0.322.16001), X64 RyuJIT
Method RomPath UseKeys Mean Error StdDev Gen 0 Gen 1 Gen 2 Allocated
ReadRom METALMAX3_BM9JQC_00.nds False 644.6 μs 5.22 μs 4.63 μs 69.3359 34.1797 - 363 KB
WriteRom METALMAX3_BM9JQC_00.nds False 14,773.0 μs 103.24 μs 96.57 μs 437.5000 - - 1,489 KB
ReadRom METALMAX3_BM9JQC_00.nds True 3,703.4 μs 52.41 μs 46.46 μs 359.3750 355.4688 253.9063 1,751 KB
WriteRom METALMAX3_BM9JQC_00.nds True 16,896.0 μs 185.35 μs 164.31 μs 468.7500 - - 2,738 KB
ReadRom NINOKUNI_B2KJHF_00.nds False 49,226.2 μs 931.52 μs 871.35 μs 2181.8182 1000.0000 363.6364 11,478 KB
WriteRom NINOKUNI_B2KJHF_00.nds False 195,813.7 μs 1,439.25 μs 1,275.85 μs 24333.3333 - - 76,040 KB
ReadRom NINOKUNI_B2KJHF_00.nds True 53,132.3 μs 492.81 μs 460.98 μs 2200.0000 1100.0000 300.0000 12,762 KB
WriteRom NINOKUNI_B2KJHF_00.nds True 196,530.8 μs 1,354.32 μs 1,200.57 μs 24333.3333 - - 77,180 KB
ReadRom PSL_VPYJ2P_00.nds False 2,498.6 μs 25.04 μs 22.19 μs 183.5938 89.8438 - 1,078 KB
WriteRom PSL_VPYJ2P_00.nds False 46,950.7 μs 374.24 μs 331.76 μs 1909.0909 - - 6,124 KB
ReadRom PSL_VPYJ2P_00.nds True 5,156.0 μs 69.84 μs 65.33 μs 226.5625 109.3750 - 1,307 KB
WriteRom PSL_VPYJ2P_00.nds True 48,994.9 μs 728.30 μs 681.25 μs 1909.0909 - - 6,216 KB