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
(Ubuntu 18)

1710 ms
58.45 fps

2101 ms
47.57 fps

2735 ms
36.55 fps

3153 ms
31.71 fps

3693 ms
27.07 fps

i7-4790K
(Windows 7)

1543 ms
64.80 fps

3642 ms
27.45 fps

6919 ms
14.45 fps

9239 ms
10.82 fps

12392 ms
8.06 fps

i7-4770HQ
(Windows 10)

1807 ms
55.31 fps

5709 ms
17.51 fps

11720 ms
8.53 fps

15613 ms
6.40 fps

22136 ms
4.51 fps

Galaxy S10+
(Android 10)

7244 ms
13.80 fps

18408 ms
5.43 fps

37880 ms
2.63 fps

52165 ms
1.91 fps

62776 ms
1.59 fps

Raspberry Pi 4
(Raspbian OS)

7477 ms
13.37 fps

31837 ms
3.14 fps

70229 ms
1.49 fps

96170 ms
1.03 fps

133263 ms
0.75 fps

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.