😎
AsposeとZXing.NetのQRデコード速度ベンチ
有償のライブラリAsposeと、業界標準といっていいOSSのZXingの.NETラッパーのベンチマークを実施してみました。
結論から言うと、処理速度はZXing.Netの方が高速でした。
特に、QRと誤認しやすいノイズののった画像だとAsposeだと長時間処理がかかることも多かったため、基本的にはZXing.Netを今後は利用しようかなと思います。
評価環境
- AMD Ryzen 9 7950X, 1 CPU, 32 logical and 16 physical cores 96GB Memory
- Windows 11 (10.0.26100.3476)
- .NET 8.0.14
- .NET Framework 4.8.1
- BenchmarkDotNet v0.14.0
- ZXing.Net 0.16.10
- ZXing.Net.Bindings.SkiaSharp 0.16.21
- BitMiracle.LibTiff.NET 2.4.660
評価データ
- JPEG 300dpi カラー
- TIFF 300dpi 二値
評価結果
.NET 8.0
.NET 8.0は、System.Drawing.BitmapがWindows環境でしか利用できないので、バイト列からのデコードのみを評価します。
処理速度はZXingが高速ですが、AllocatedはZXingの場合は.NETの非管理のUnmanaged領域が利用されているので、下記の数字を鵜呑みにはしないでください。
TIFF
Method | Mean | Error | StdDev | Median | Gen0 | Gen1 | Gen2 | Allocated |
---|---|---|---|---|---|---|---|---|
Aspose_HighPerformance | 94.52 ms | 1.877 ms | 3.661 ms | 95.85 ms | 13333.3333 | 2333.3333 | 1333.3333 | 332.7 MB |
Aspose_NormalQuality | 136.86 ms | 2.682 ms | 2.981 ms | 137.49 ms | 28500.0000 | 2500.0000 | 1500.0000 | 584.1 MB |
Aspose_HighQuality | 211.89 ms | 2.318 ms | 1.936 ms | 211.65 ms | 61000.0000 | 3000.0000 | 2000.0000 | 1096.9 MB |
Aspose_MaxQuality | 547.61 ms | 10.850 ms | 31.130 ms | 556.16 ms | 98000.0000 | 4000.0000 | 3000.0000 | 1802.95 MB |
ZXing | 23.97 ms | 0.294 ms | 0.275 ms | 23.94 ms | 937.5000 | 906.2500 | 906.2500 | 7.64 MB |
JPEG
Method | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
---|---|---|---|---|---|---|---|
Aspose_HighPerformance | 488.69 ms | 9.683 ms | 9.944 ms | 104000.0000 | 86000.0000 | 3000.0000 | 1745.5 MB |
Aspose_NormalQuality | 568.23 ms | 11.336 ms | 17.311 ms | 128000.0000 | 92000.0000 | 4000.0000 | 2133.61 MB |
Aspose_HighQuality | 1,823.70 ms | 11.215 ms | 9.365 ms | 375000.0000 | 140000.0000 | 11000.0000 | 5920.84 MB |
Aspose_MaxQuality | 2,266.67 ms | 39.653 ms | 37.091 ms | 419000.0000 | 145000.0000 | 14000.0000 | 6836.44 MB |
ZXing | 99.72 ms | 1.676 ms | 1.646 ms | 500.0000 | 500.0000 | 500.0000 | 9.92 MB |
.NET Framework 4.5.1
こちらもZXingがすべての面において高速です。
TIFF
Method | Image | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
---|---|---|---|---|---|---|---|---|
Aspose_HighPerformance | Bitmap | 92.80 ms | 1.845 ms | 5.050 ms | 33500.0000 | 3166.6667 | 1000.0000 | 228.37 MB |
Aspose_NormalQuality | Bitmap | 155.42 ms | 3.107 ms | 7.323 ms | 75250.0000 | 5500.0000 | 1750.0000 | 507.25 MB |
Aspose_HighQuality | Bitmap | 358.44 ms | 7.134 ms | 14.412 ms | 168000.0000 | 10000.0000 | 3000.0000 | 1058.71 MB |
Aspose_MaxQuality | Bitmap | 690.29 ms | 13.701 ms | 25.053 ms | 265000.0000 | 9000.0000 | 3000.0000 | 1781.53 MB |
ZXing | Bitmap | 33.47 ms | 0.641 ms | 0.629 ms | 875.0000 | 812.5000 | 812.5000 | 7.56 MB |
Aspose_HighPerformance | Byte Array | 91.08 ms | 1.769 ms | 2.593 ms | 34000.0000 | 3000.0000 | 1500.0000 | 228.42 MB |
Aspose_NormalQuality | Byte Array | 156.52 ms | 3.107 ms | 4.651 ms | 75000.0000 | 5750.0000 | 1750.0000 | 506.72 MB |
Aspose_HighQuality | Byte Array | 377.58 ms | 7.539 ms | 19.595 ms | 168000.0000 | 9000.0000 | 3000.0000 | 1062.77 MB |
Aspose_MaxQuality | Byte Array | 791.26 ms | 15.803 ms | 41.631 ms | 266000.0000 | 12000.0000 | 4000.0000 | 1781.51 MB |
ZXing | Byte Array | 32.60 ms | 0.324 ms | 0.253 ms | 1000.0000 | 906.2500 | 906.2500 | 7.65 MB |
JPEG
Method | Image | Mean | Error | StdDev | Gen0 | Gen1 | Gen2 | Allocated |
---|---|---|---|---|---|---|---|---|
Aspose_HighPerformance | Bitmap | 688.03 ms | 13.532 ms | 27.026 ms | 306000.0000 | 124000.0000 | 25000.0000 | 1772.4 MB |
Aspose_NormalQuality | Bitmap | 803.28 ms | 16.002 ms | 38.951 ms | 368000.0000 | 118000.0000 | 23000.0000 | 2191.91 MB |
Aspose_HighQuality | Bitmap | 3,240.31 ms | 62.227 ms | 80.912 ms | 1051000.0000 | 217000.0000 | 15000.0000 | 6379.14 MB |
Aspose_MaxQuality | Bitmap | 4,126.77 ms | 76.796 ms | 71.835 ms | 1168000.0000 | 233000.0000 | 20000.0000 | 7319.55 MB |
ZXing | Bitmap | 89.34 ms | 0.872 ms | 0.728 ms | 1166.6667 | 500.0000 | 500.0000 | 13.66 MB |
Aspose_HighPerformance | Byte Array | 683.44 ms | 12.189 ms | 17.088 ms | 304000.0000 | 122000.0000 | 23000.0000 | 1765.53 MB |
Aspose_NormalQuality | Byte Array | 816.61 ms | 16.051 ms | 34.893 ms | 369000.0000 | 124000.0000 | 24000.0000 | 2195.32 MB |
Aspose_HighQuality | Byte Array | 3,265.05 ms | 64.554 ms | 113.061 ms | 1055000.0000 | 226000.0000 | 19000.0000 | 6382.87 MB |
Aspose_MaxQuality | Byte Array | 4,138.01 ms | 81.408 ms | 90.485 ms | 1168000.0000 | 230000.0000 | 19000.0000 | 7318.79 MB |
ZXing | Byte Array | 115.91 ms | 1.773 ms | 1.481 ms | 600.0000 | 600.0000 | 600.0000 | 9.93 MB |
Discussion