.. raw:: html .. role:: red .. role:: blue .. role:: green .. role:: cyan .. role:: magenta .. role:: orange .. role:: brown .. _benchmarks: 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.0.0* was compared against *mdfreader 0.2.5*. *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: * Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] * Windows-7-6.1.7601-SP1 * Intel64 Family 6 Model 94 Stepping 3, GenuineIntel (i7-6820Q) * 16GB installed RAM The notations used in the results have the following meaning: * nodata = MDF object created with load_measured_data=False (raw channel data no loaded into RAM) * compression = MDF object created with compression=True (raw channel data loaded into RAM and compressed) * noconvert = MDF object created with convertAfterRead=False Raw data ^^^^^^^^ ======================================== ========= ======== Open file Time [ms] RAM [MB] ======================================== ========= ======== asammdf 2.0.0 mdfv3 721 352 asammdf 2.0.0 compression mdfv3 1008 275 asammdf 2.0.0 nodata mdfv3 641 199 mdfreader 0.2.5 mdfv3 2996 526 mdfreader 0.2.5 no convert mdfv3 2846 393 asammdf 2.0.0 mdfv4 1634 439 asammdf 2.0.0 compression mdfv4 1917 343 asammdf 2.0.0 nodata mdfv4 1594 274 mdfreader 0.2.5 mdfv4 31023 739 mdfreader 0.2.5 noconvert mdfv4 30693 609 ======================================== ========= ======== ======================================== ========= ======== Save file Time [ms] RAM [MB] ======================================== ========= ======== asammdf 2.0.0 mdfv3 472 353 asammdf 2.0.0 compression mdfv3 667 275 mdfreader 0.2.5 mdfv3 18910 2003 asammdf 2.0.0 mdfv4 686 447 asammdf 2.0.0 compression mdfv4 836 352 mdfreader 0.2.5 mdfv4 16631 2802 ======================================== ========= ======== ======================================== ========= ======== Get all channels Time [ms] RAM [MB] ======================================== ========= ======== asammdf 2.0.0 mdfv3 2492 362 asammdf 2.0.0 compression mdfv3 14474 285 asammdf 2.0.0 nodata mdfv3 9621 215 mdfreader 0.2.5 mdfv3 31 526 asammdf 2.0.0 mdfv4 2066 450 asammdf 2.0.0 compression mdfv4 16944 359 asammdf 2.0.0 nodata mdfv4 12364 292 mdfreader 0.2.5 mdfv4 39 739 ======================================== ========= ======== Graphical results ^^^^^^^^^^^^^^^^^ .. figure:: ../benchmarks/open.png :align: center .. figure:: ../benchmarks/open_ram_usage.png :align: center .. figure:: ../benchmarks/save.png :align: center .. figure:: ../benchmarks/save_ram_usage.png :align: center .. figure:: ../benchmarks/get_all_channels.png :align: center .. figure:: ../benchmarks/get_all_channels_ram_usage.png :align: center x86 Python results ------------------ The test environment used for 32 bit tests had: * Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 17:54:52) [MSC v.1900 32 bit (Intel)] * Windows-7-6.1.7601-SP1 * Intel64 Family 6 Model 94 Stepping 3, GenuineIntel (i7-6820Q) * 16GB installed RAM The notations used in the results have the following meaning: * nodata = MDF object created with load_measured_data=False (raw channel data no loaded into RAM) * compression = MDF object created with compression=True (raw channel data loaded into RAM and compressed) * noconvert = MDF object created with convertAfterRead=False Raw data ^^^^^^^^ ======================================== ========= ======== Open file Time [ms] RAM [MB] ======================================== ========= ======== asammdf 2.0.0 mdfv3 851 283 asammdf 2.0.0 compression mdfv3 1149 190 asammdf 2.0.0 nodata mdfv3 765 129 mdfreader 0.2.5 mdfv3 3633 453 mdfreader 0.2.5 no convert mdfv3 3309 319 asammdf 2.0.0 mdfv4 1854 339 asammdf 2.0.0 compression mdfv4 2191 236 asammdf 2.0.0 nodata mdfv4 1772 173 mdfreader 0.2.5 mdfv4 42177 576 mdfreader 0.2.5 noconvert mdfv4 41799 447 ======================================== ========= ======== ======================================== ========= ======== Save file Time [ms] RAM [MB] ======================================== ========= ======== asammdf 2.0.0 mdfv3 564 286 asammdf 2.0.0 compression mdfv3 756 194 mdfreader 0.2.5 mdfv3 17499 1236 asammdf 2.0.0 mdfv4 906 347 asammdf 2.0.0 compression mdfv4 1112 244 mdfreader 0.2.5 mdfv4 15027 1698 ======================================== ========= ======== ======================================== ========= ======== Get all channels Time [ms] RAM [MB] ======================================== ========= ======== asammdf 2.0.0 mdfv3 3224 293 asammdf 2.0.0 compression mdfv3 25019 201 asammdf 2.0.0 nodata mdfv3 18824 144 mdfreader 0.2.5 mdfv3 35 454 asammdf 2.0.0 mdfv4 2513 349 asammdf 2.0.0 compression mdfv4 25140 250 asammdf 2.0.0 nodata mdfv4 19862 188 mdfreader 0.2.5 mdfv4 50 576 ======================================== ========= ========