Intro

The benchmarks were done using two test files (for mdf version 3 and 4) of around 170MB. The files contain 183 data groups and a total of 36424 channels.

asamdf 2.5.2 was compared against mdfreader 0.2.5 (latest versions from PyPI). mdfreader seems to be the most used Python package to handle MDF files, and it also supports both version 3 and 4 of the standard.

The three benchmark cathegories are file open, file save and extracting the data for all channels inside the file(36424 calls). For each cathegory two aspect were noted: elapsed time and peak RAM usage.

Dependencies

You will need the following packages to be able to run the benchmark script

  • psutil
  • mdfreader

x64 Python results

The test environment used for 64 bit tests had:

  • 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)]
  • Windows-10-10.0.14393-SP0
  • Intel64 Family 6 Model 94 Stepping 3, GenuineIntel
  • 16GB installed RAM

Notations used in the results:

  • nodata = asammdf MDF object created with load_measured_data=False (raw channel data not loaded into RAM)

Files used for benchmark:

  • 183 groups
  • 36424 channels

Raw data

Open file Time [ms] RAM [MB]
asammdf 2.5.2 mdfv3 832 372
asammdf 2.5.2 nodata mdfv3 615 191
mdfreader 0.2.5 mdfv3 2876 537
asammdf 2.5.2 mdfv4 1690 455
asammdf 2.5.2 nodata mdfv4 1289 260
mdfreader 0.2.5 mdfv4 30755 748
Save file Time [ms] RAM [MB]
asammdf 2.5.2 mdfv3 393 373
asammdf 2.5.2 nodata mdfv3 452 198
mdfreader 0.2.5 mdfv3 21409 1997
asammdf 2.5.2 mdfv4 552 465
asammdf 2.5.2 nodata mdfv4 563 275
mdfreader 0.2.5 mdfv4 18899 2795
Get all channels (36424 calls) Time [ms] RAM [MB]
asammdf 2.5.2 mdfv3 633 381
asammdf 2.5.2 nodata mdfv3 8703 207
mdfreader 0.2.5 mdfv3 29 537
asammdf 2.5.2 mdfv4 633 464
asammdf 2.5.2 nodata mdfv4 12241 274
mdfreader 0.2.5 mdfv4 40 748
Convert file Time [ms] RAM [MB]
asammdf 2.5.2 v3 to v4 4504 856
asammdf 2.5.2 v3 to v4 nodata 21983 592
asammdf 2.5.2 v4 to v3 4731 883
asammdf 2.5.2 v4 to v3 nodata 26840 740
Merge files Time [ms] RAM [MB]
asammdf 2.5.2 v3 10572 1428
asammdf 2.5.2 v3 nodata 31014 519
asammdf 2.5.2 v4 12852 1558
asammdf 2.5.2 v4 nodata 41054 610

x86 Python results

The test environment used for 32 bit tests had:

  • 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)]
  • Windows-10-10.0.14393-SP0
  • Intel64 Family 6 Model 94 Stepping 3, GenuineIntel
  • 16GB installed RAM

Notations used in the results:

  • nodata = asammdf MDF object created with load_measured_data=False (raw channel data not loaded into RAM)

Files used for benchmark:

  • 183 groups
  • 36424 channels

Raw data

Open file Time [ms] RAM [MB]
asammdf 2.5.2 mdfv3 951 289
asammdf 2.5.2 nodata mdfv3 667 119
mdfreader 0.2.5 mdfv3 3628 454
asammdf 2.5.2 mdfv4 2142 343
asammdf 2.5.2 nodata mdfv4 1585 161
mdfreader 0.2.5 mdfv4 42997 577
Save file Time [ms] RAM [MB]
asammdf 2.5.2 mdfv3 530 293
asammdf 2.5.2 nodata mdfv3 457 126
mdfreader 0.2.5 mdfv3 19931 1225
asammdf 2.5.2 mdfv4 705 354
asammdf 2.5.2 nodata mdfv4 707 175
mdfreader 0.2.5 mdfv4 17803 1686
Get all channels (36424 calls) Time [ms] RAM [MB]
asammdf 2.5.2 mdfv3 865 298
asammdf 2.5.2 nodata mdfv3 18442 132
mdfreader 0.2.5 mdfv3 36 454
asammdf 2.5.2 mdfv4 803 349
asammdf 2.5.2 nodata mdfv4 20397 171
mdfreader 0.2.5 mdfv4 48 577
Convert file Time [ms] RAM [MB]
asammdf 2.5.2 v3 to v4 5824 690
asammdf 2.5.2 v3 to v4 nodata 28060 486
asammdf 2.5.2 v4 to v3 5591 710
asammdf 2.5.2 v4 to v3 nodata 30169 638
Merge files Time [ms] RAM [MB]
asammdf 2.5.2 v3 13152 1226
asammdf 2.5.2 v3 nodata 53144 348
asammdf 2.5.2 v4 15031 1296
asammdf 2.5.2 v4 nodata 60374 389