With a compiler switch, you can change how MtxVec will be included in to your application.
Main advantages:
- Small size of distribution
- Platform independent builds
The Core edition is the key new feature of MtxVec v5. It allows MtxVec to be compiled completely without reference to external dlls and run with pure pascal code only (100% full source code). All the algorithms relevant to the add-on packages of DSP Master and Stats Master have been implemented in pascal. The numerical accuracy is comparable. Great care was taken when translating Fortran Lapack code to pascal to maintain nearly line by line comparability. The code runs slower (of course) than its Windows dll based counterpart, but greatly simplifies distribution on Windows and to other platforms like Android and OSx/iOS.
Features added with MtxVec v5.3:
On OSX and iOS the MtxVec now interfaces Apple Accelerate framework. The big advantage here is that no additional libraries need to be included with distribution. The following sub-systems are mapped : BLAS, LAPACK (including complex number support), math functions (sin, cos, tan, exp, ln, ...), and the FFT library. There is some support in the Accelerate framework for vectorized math, but that is not as comprehensive as on the Windows.
The DSP Master of course benefits from the faster FFTs and optimized dot product functions. Additionaly TSignalCoreAudioIn and TSignalCoreAudioOut have been upgraded to support playback and recording on Android and iOS. This simplifies development of audio processing applications immensly, because the entire application can now be debugged on Windows and only deployed to the mobile device. On the iOS the audio pack used is RemoteIO and on Android it is the AudioRecord and AudioTrack classes. These are then optimized for widest possible hardware and OS version compatibility.
The Delphi math unit and default System unit math functions have been bypassed for both Android and iOS with Math387 which now run about 20x faster by making direct using of the libm library.
According to our tests, an Apple mobile application is capable of 10x faster CPU code execution, due to better hardware and provided accelerator framework libraries, than high-end Android devices. The performance of such iOS apps is very close to Delphi Windows desktop applications when running without special optimizations. Bellow you can find some basic benchmarks using one CPU core for orientation.
Computing: for i := 0 to 511 do c[i] := sqrt(sqr(a[i]) + sqr(b[i])), 1024x. single precision
- iPad, A9 (with acc): 6ms (Apple A9, 1.85 GHz)
- iPhone 5s, A7 (with acc): 9ms
- iPhone 5s A7 (no acc, libm): 18ms (Apple A7, 1.3GHz, dual core)
- Huawei P10 Lite (libm): 22ms (2.4GHz, Cortex A53, 4 cores).
- LG V700 (libm): 120ms (1.2GHz Qualcomm, ARMv7, 4 cores)
- Core i5 4670 (no acc): 2.5ms (3.7GHz, 4 cores)
- Core i5 4670 (acc): 0.3ms (3.7GHz, 4 cores)
Computing FFT (1024 samples real to complex). 1024x, single precision
- iPad, A9 (with acc): 14ms
- iPad, A9 (no acc): 90ms
- iphone 5s (with acc): 37ms
- iPhone 5s (no acc): 156ms
- LG V700: 400ms
- Huawei P10 Lite: 200ms
- Core i5 4670 (no acc): 27ms
- Core i5 4670 (acc): 1ms