Quantcast
Channel: Barcode – Dynamsoft Developers
Viewing all articles
Browse latest Browse all 145

How to Use Dynamsoft Barcode Reader SDK on Mac with Apple Silicon

$
0
0

Apple announced new Mac models with Apple M1 chip recently. Although Dynamsoft has not released an Apple Silicon version of Dynamsoft Barcode Reader SDK yet, I am curious how will x86_64 barcode SDK perform under Rosetta 2. In this article, I will build a simple command-line barcode reader app on M1-powered MacBook Air, and compare the barcode decoding performance by running the app respectively on Intel-based macOS and M1-based macOS.

Mac Barcode SDK Download

Dynamsoft Barcode Reader v7.6 for macOS

Note: the header file included in the package only supports Objective-C and Swift. To build C/C++ programs, you need to download corresponding header files from Windows and Linux packages.

Barcode Decoding in C/C++

Firstly, you need to include the header file DynamsoftBarcodeReader.h in your *.cpp file:

#include "DynamsoftBarcodeReader.h"

The next step is to initialize a barcode reader object and set a valid license:

CBarcodeReader reader;
reader.InitLicense (license);

To decode barcodes, there are three optional methods:

If you don’t have image codec libraries, you can use either DecodeFile() or DecodeFileInMemory().

Finally, barcode results can be extracted by calling GetAllTextResults():

    TextResultArray *paryResult = NULL;
    reader.GetAllTextResults(&paryResult);
    
    for (int index = 0; index < paryResult->resultsCount; index++)
    {
    }

Intel Chip vs. Apple Silicon

Once coding is done, we can get started to build and test the barcode program on different machines.

Test Image

I used an image containing multiple barcodes.

multiple barcodes

Intel-based MacBook Air

Mac with Intel Chip

Build and run the app:

% sysctl -n machdep.cpu.brand_string
Intel(R) Core(TM) i7-5650U CPU @ 2.20GHz

% sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.6
BuildVersion:   19G73

% g++ -o barcodereader BarcodeReader.cpp -L./ -lDynamsoftBarcodeReader

% ./barcodereader test.jpg
CPU threads: 4

Thread count: 1. Total barcode(s) found: 31. Time cost: 426 ms

Thread count: 2. Total barcode(s) found: 31. Time cost: 505 ms

Thread count: 3. Total barcode(s) found: 31. Time cost: 483 ms

Thread count: 4. Total barcode(s) found: 31. Time cost: 479 ms

Multi-thread best performance: thread_count = 1, timecost = 426

M1-based MacBook Air

Mac with Apple Silicon

Since Rosetta 2 can translate apps that contain x86_64 instructions to arm64 instructions, I can just copy the program I built on Intel-based MacBook Air to M1-based MacBook Air.

Because Xcode 12.2 and later versions support building universal binaries, I can also link the x86_64 dynamic library and build the program on Mac with Apple M1:

% sysctl -n machdep.cpu.brand_string
Apple processor

 % sw_vers
ProductName:    macOS
ProductVersion: 11.0
BuildVersion:   20A2411

% g++ -target x86_64-apple-macos10.9 -o barcodereader BarcodeReader.cpp -L./ -lDynamsoftBarcodeReader

% ./barcodereader test.jpg
CPU threads: 8

Thread count: 1. Total barcode(s) found: 31. Time cost: 291 ms

Thread count: 2. Total barcode(s) found: 31. Time cost: 302 ms

Thread count: 3. Total barcode(s) found: 31. Time cost: 300 ms

Thread count: 4. Total barcode(s) found: 31. Time cost: 298 ms

Thread count: 5. Total barcode(s) found: 31. Time cost: 301 ms

Thread count: 6. Total barcode(s) found: 31. Time cost: 297 ms

Thread count: 7. Total barcode(s) found: 31. Time cost: 298 ms

Thread count: 8. Total barcode(s) found: 31. Time cost: 298 ms

Multi-thread best performance: thread_count = 1, timecost = 291

Note: the build will fail without the argument “-target x86_64-apple-macos10.9”.

Apple M1 gcc

We can see the barcode decoding speed on MacBook Air with Apple Silicon is much faster.

Source Code

yushulx/mac-command-line-barcode-reader (github.com)

The post How to Use Dynamsoft Barcode Reader SDK on Mac with Apple Silicon appeared first on Dynamsoft Developers.


Viewing all articles
Browse latest Browse all 145

Trending Articles