Benchmark¶
It’s easy to assert that our implementation is fast without backing our claim with numbers and source code freely available to everyone to check.
- Rules:
We’re running the processing function within a loop for #100 times.
The positive rate defines the percentage of images with #1 MICR line. For example, 20% positives means we will have #80 negative images (no MICR lines) and #20 positives (with MICR lines) out of the #100 total images. This percentage is important as it allows timing both the detector and recognizer.
We’re using high accuracy for the segmenter and bilinear interpolation.
All positive images contain #1 MICR line.
Only E-13B format is enabled.
The initialization is done outside the loop.
0% positives |
20% positives |
50% positives |
70% positives |
100% positives |
|
---|---|---|---|---|---|
Xeon E31230v5
GTX 1070 |
1710 ms |
2101 ms |
2735 ms |
3153 ms |
3693 ms |
i7-4790K |
1543 ms |
3642 ms |
6919 ms |
9239 ms |
12392 ms |
i7-4770HQ |
1807 ms |
5709 ms |
11720 ms |
15613 ms |
22136 ms |
Galaxy S10+ |
7244 ms |
18408 ms |
37880 ms |
52165 ms |
62776 ms |
Raspberry Pi 4 |
7477 ms |
31837 ms |
70229 ms |
96170 ms |
133263 ms |
More information on how to build and use the application could be found at https://github.com/DoubangoTelecom/ultimateMICR-SDK/blob/master/samples/c++/benchmark/README.md.
For Android and iOS the Benchmark applications are in samples/android/benchmark and samples/ios/benchmark folders.
Please note that even if Raspberry Pi 4 have a 64-bit CPU Raspbian OS uses a 32-bit kernel which means we’re loosing many SIMD optimizations.