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.3 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.3 mdfv3 876 357
asammdf 2.5.3 nodata mdfv3 636 181
mdfreader 0.2.5 mdfv3 3295 537
asammdf 2.5.3 mdfv4 1889 436
asammdf 2.5.3 nodata mdfv4 1498 245
mdfreader 0.2.5 mdfv4 34732 748
Save file Time [ms] RAM [MB]
asammdf 2.5.3 mdfv3 486 359
asammdf 2.5.3 nodata mdfv3 538 188
mdfreader 0.2.5 mdfv3 25780 1996
asammdf 2.5.3 mdfv4 628 442
asammdf 2.5.3 nodata mdfv4 579 257
mdfreader 0.2.5 mdfv4 21399 2795
Get all channels (36424 calls) Time [ms] RAM [MB]
asammdf 2.5.3 mdfv3 732 367
asammdf 2.5.3 nodata mdfv3 10205 198
mdfreader 0.2.5 mdfv3 35 537
asammdf 2.5.3 mdfv4 688 445
asammdf 2.5.3 nodata mdfv4 14187 258
mdfreader 0.2.5 mdfv4 45 748
Convert file Time [ms] RAM [MB]
asammdf 2.5.3 v3 to v4 5056 828
asammdf 2.5.3 v3 to v4 nodata 24569 576
asammdf 2.5.3 v4 to v3 5300 851
asammdf 2.5.3 v4 to v3 nodata 29128 725
Merge files Time [ms] RAM [MB]
asammdf 2.5.3 v3 11408 1387
asammdf 2.5.3 v3 nodata 35575 487
asammdf 2.5.3 v4 14531 1507
asammdf 2.5.3 v4 nodata 44399 568

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.3 mdfv3 897 281
asammdf 2.5.3 nodata mdfv3 648 112
mdfreader 0.2.5 mdfv3 3836 454
asammdf 2.5.3 mdfv4 2098 331
asammdf 2.5.3 nodata mdfv4 1588 151
mdfreader 0.2.5 mdfv4 45415 577
Save file Time [ms] RAM [MB]
asammdf 2.5.3 mdfv3 469 285
asammdf 2.5.3 nodata mdfv3 526 119
mdfreader 0.2.5 mdfv3 20328 1224
asammdf 2.5.3 mdfv4 752 337
asammdf 2.5.3 nodata mdfv4 751 160
mdfreader 0.2.5 mdfv4 18135 1686
Get all channels (36424 calls) Time [ms] RAM [MB]
asammdf 2.5.3 mdfv3 846 289
asammdf 2.5.3 nodata mdfv3 19460 126
mdfreader 0.2.5 mdfv3 37 454
asammdf 2.5.3 mdfv4 809 337
asammdf 2.5.3 nodata mdfv4 20778 161
mdfreader 0.2.5 mdfv4 49 577
Convert file Time [ms] RAM [MB]
asammdf 2.5.3 v3 to v4 6121 673
asammdf 2.5.3 v3 to v4 nodata 29340 476
asammdf 2.5.3 v4 to v3 5645 690
asammdf 2.5.3 v4 to v3 nodata 32115 628
Merge files Time [ms] RAM [MB]
asammdf 2.5.3 v3 13392 1201
asammdf 2.5.3 v3 nodata 54040 327
asammdf 2.5.3 v4 15031 1265
asammdf 2.5.3 v4 nodata 60397 364