This release brings support for .NET 10 as well as various optimizations. Benchmarks compared to DMISharp 2.1.0 are found below.
Ratios use DMISharp 2.1.0 on .NET 8.0 as the baseline. Lower mean time and allocation values are better.
| Method | Runtime | DMISharp Version | Mean | Error | StdDev | Ratio | RatioSD | Gen0 | Gen1 | Gen2 | Allocated | Alloc Ratio |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ReadSmallDMIFile | .NET 8.0 | 2.1.0 | 485.4 μs | 47.98 μs | 7.43 μs | 1.00 | 0.02 | 1.9531 | - | - | 63.74 KB | 1.00 |
| ReadSmallDMIFile | .NET 8.0 | 3.0.0 | 441.5 μs | 8.58 μs | 12.84 μs | 0.91 | 0.03 | 0.9766 | 0.4883 | - | 36.32 KB | 0.57 |
| ReadSmallDMIFile | .NET 10.0 | 3.0.0 | 441.6 μs | 8.70 μs | 19.45 μs | 0.91 | 0.04 | - | - | - | 13.96 KB | 0.22 |
| ReadLargeDMIFile | .NET 8.0 | 2.1.0 | 19,115.4 μs | 2,269.97 μs | 589.50 μs | 1.00 | 0.04 | 343.7500 | 312.5000 | 125.0000 | 6,069.40 KB | 1.00 |
| ReadLargeDMIFile | .NET 8.0 | 3.0.0 | 13,905.4 μs | 134.34 μs | 119.09 μs | 0.73 | 0.02 | 1,281.2500 | 1,281.2500 | 1,281.2500 | 100.71 KB | 0.02 |
| ReadLargeDMIFile | .NET 10.0 | 3.0.0 | 8,358.7 μs | 163.64 μs | 160.72 μs | 0.44 | 0.01 | 1,156.2500 | 1,156.2500 | 1,156.2500 | 100.98 KB | 0.02 |
| SortDMIFile | .NET 8.0 | 2.1.0 | 291,293.6 μs | 9,131.28 μs | 2,371.36 μs | 1.00 | 0.01 | 1,000.0000 | 1,000.0000 | 1,000.0000 | 4,518.67 KB | 1.00 |
| SortDMIFile | .NET 8.0 | 3.0.0 | 288,989.7 μs | 5,266.34 μs | 4,926.14 μs | 0.99 | 0.02 | 1,000.0000 | 1,000.0000 | 1,000.0000 | 4,100.63 KB | 0.91 |
| SortDMIFile | .NET 10.0 | 3.0.0 | 263,232.9 μs | 4,763.20 μs | 4,222.46 μs | 0.90 | 0.02 | 1,000.0000 | 1,000.0000 | 1,000.0000 | 4,044.31 KB | 0.90 |
| WriteAnimations | .NET 8.0 | 2.1.0 | 29,505.0 μs | 1,729.35 μs | 267.62 μs | 1.00 | 0.01 | 4,531.2500 | 4,531.2500 | 4,531.2500 | 3,503.87 KB | 1.00 |
| WriteAnimations | .NET 8.0 | 3.0.0 | 10,378.6 μs | 185.48 μs | 164.43 μs | 0.35 | 0.01 | 46.8750 | 31.2500 | 31.2500 | 422.41 KB | 0.12 |
| WriteAnimations | .NET 10.0 | 3.0.0 | 5,205.4 μs | 101.72 μs | 113.06 μs | 0.18 | 0.00 | 23.4375 | 15.6250 | 15.6250 | 420.92 KB | 0.12 |
| AnimationOfBarsignsConstructsCorrectly | .NET 8.0 | 2.1.0 | 12,412.9 μs | 146.01 μs | 22.59 μs | 1.00 | 0.00 | 2,000.0000 | 2,000.0000 | 2,000.0000 | 734.40 KB | 1.00 |
| AnimationOfBarsignsConstructsCorrectly | .NET 8.0 | 3.0.0 | 7,882.9 μs | 81.33 μs | 67.92 μs | 0.64 | 0.01 | 15.6250 | 15.6250 | 15.6250 | 73.02 KB | 0.10 |
| AnimationOfBarsignsConstructsCorrectly | .NET 10.0 | 3.0.0 | 3,920.5 μs | 74.63 μs | 85.95 μs | 0.32 | 0.01 | 15.6250 | 15.6250 | 15.6250 | 72.69 KB | 0.10 |
| AnimationOfSingularityConstructsCorrectly | .NET 8.0 | 2.1.0 | 260,949.4 μs | 21,849.99 μs | 3,381.31 μs | 1.00 | 0.02 | 10,000.0000 | 9,000.0000 | 6,000.0000 | 121,454.19 KB | 1.00 |
| AnimationOfSingularityConstructsCorrectly | .NET 8.0 | 3.0.0 | 261,885.9 μs | 2,771.54 μs | 2,456.90 μs | 1.00 | 0.01 | 5,000.0000 | 4,500.0000 | 500.0000 | 119,305.61 KB | 0.98 |
| AnimationOfSingularityConstructsCorrectly | .NET 10.0 | 3.0.0 | 263,810.1 μs | 5,225.86 μs | 4,632.59 μs | 1.01 | 0.02 | 5,000.0000 | 4,500.0000 | 500.0000 | 119,300.50 KB | 0.98 |
| WritePaletteDMIFile (air_meter.dmi) | .NET 8.0 | 2.1.0 | 2,629.7 μs | 448.54 μs | 116.49 μs | 1.00 | 0.06 | - | - | - | 98.80 KB | 1.00 |
| WritePaletteDMIFile (air_meter.dmi) | .NET 8.0 | 3.0.0 | 2,521.7 μs | 50.09 μs | 83.70 μs | 0.96 | 0.05 | - | - | - | 78.25 KB | 0.79 |
| WritePaletteDMIFile (air_meter.dmi) | .NET 10.0 | 3.0.0 | 2,488.7 μs | 48.57 μs | 81.16 μs | 0.95 | 0.05 | - | - | - | 76.70 KB | 0.78 |
| WritePaletteDMIFile (small.dmi) | .NET 8.0 | 2.1.0 | 4,759.7 μs | 550.90 μs | 85.25 μs | 1.00 | 0.02 | - | - | - | 90.91 KB | 1.00 |
| WritePaletteDMIFile (small.dmi) | .NET 8.0 | 3.0.0 | 4,709.0 μs | 74.20 μs | 65.78 μs | 0.99 | 0.02 | - | - | - | 75.48 KB | 0.83 |
| WritePaletteDMIFile (small.dmi) | .NET 10.0 | 3.0.0 | 4,480.8 μs | 87.80 μs | 82.13 μs | 0.94 | 0.02 | - | - | - | 73.93 KB | 0.81 |
What's Changed
- Update GitHub Actions versions by @bobbah in #19
- Optimize palette color lookup by @bobbah in #17
- Optimize GIF frame construction by @bobbah in #16
- Optimize PNG save pipeline by @bobbah in #14
- Optimize state collection operations by @bobbah in #15
- Optimize DMI loading allocations by @bobbah in #18
- Upgrade to .NET 10 and latest dependencies by @bobbah in #20
Full Changelog: 2.1.0...3.0.0