Intro¶
The benchmarks were done using two test files (available here https://github.com/danielhrisca/asammdf/issues/14) (for mdf version 3 and 4) of around 170MB. The files contain 183 data groups and a total of 36424 channels.
asamdf 2.6.5 was compared against mdfreader 0.2.6 (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
Usage¶
Extract the test files from the archive, or provide a folder that contains the files “test.mdf” and “test.mf4”. Run the module bench.py ( see –help option for available options )
x64 Python results¶
Benchmark environment
- 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)
- compression = mdfreader mdf object created with compression=blosc
- compression bcolz 6 = mdfreader mdf object created with compression=6
- noDataLoading = mdfreader mdf object read with noDataLoading=True
Files used for benchmark:
- 183 groups
- 36424 channels
Raw data¶
Open file | Time [ms] | RAM [MB] |
---|---|---|
asammdf 2.6.5 mdfv3 | 779 | 364 |
asammdf 2.6.5 nodata mdfv3 | 551 | 187 |
mdfreader 0.2.6 mdfv3 | 2672 | 545 |
mdfreader 0.2.6 compress mdfv3 | 3844 | 267 |
mdfreader 0.2.6 compress bcolz 6 mdfv3 | 3886 | 1040 |
mdfreader 0.2.6 noDataLoading mdfv3 | 1400 | 198 |
asammdf 2.6.5 mdfv4 | 1883 | 435 |
asammdf 2.6.5 nodata mdfv4 | 1457 | 244 |
mdfreader 0.2.6 mdfv4 | 5371 | 1307 |
mdfreader 0.2.6 compress mdfv4 | 6470 | 1023 |
mdfreader 0.2.6 compress bcolz 6 mdfv4 | 6894 | 1746 |
mdfreader 0.2.6 noDataLoading mdfv4 | 4078 | 943 |
Save file | Time [ms] | RAM [MB] |
---|---|---|
asammdf 2.6.5 mdfv3 | 356 | 366 |
asammdf 2.6.5 nodata mdfv3 | 398 | 195 |
mdfreader 0.2.6 mdfv3 | 10164 | 577 |
mdfreader 0.2.6 compress mdfv3 | 12341 | 542 |
mdfreader 0.2.6 compress bcolz 6 mdfv3 | 11427 | 958 |
asammdf 2.6.5 mdfv4 | 805 | 440 |
asammdf 2.6.5 nodata mdfv4 | 522 | 255 |
mdfreader 0.2.6 mdfv4 | 7256 | 1328 |
mdfreader 0.2.6 compress mdfv4 | 7010 | 1288 |
mdfreader 0.2.6 compress bcolz6 mdfv4 | 6688 | 1763 |
Get all channels (36424 calls) | Time [ms] | RAM [MB] |
---|---|---|
asammdf 2.6.5 mdfv3 | 657 | 370 |
asammdf 2.6.5 nodata mdfv3 | 9647 | 200 |
mdfreader 0.2.6 mdfv3 | 67 | 544 |
mdfreader 0.2.6 compress mdfv3 | 698 | 270 |
mdfreader 0.2.6 compress bcolz 6 mdfv3 | 267 | 1042 |
asammdf 2.6.5 mdfv4 | 736 | 443 |
asammdf 2.6.5 nodata mdfv4 | 13552 | 254 |
mdfreader 0.2.6 mdfv4 | 64 | 1307 |
mdfreader 0.2.6 compress mdfv4 | 631 | 1031 |
mdfreader 0.2.6 compress bcolz 6 mdfv4 | 304 | 1753 |
Convert file | Time [ms] | RAM [MB] |
---|---|---|
asammdf 2.6.5 v3 to v4 | 3675 | 823 |
asammdf 2.6.5 v3 to v4 nodata | 4607 | 379 |
asammdf 2.6.5 v4 to v3 | 4442 | 831 |
asammdf 2.6.5 v4 to v3 nodata | 5105 | 366 |
Merge files | Time [ms] | RAM [MB] |
---|---|---|
asammdf 2.6.5 v3 | 8605 | 1449 |
asammdf 2.6.5 v3 nodata | 11089 | 544 |
asammdf 2.6.5 v4 | 13469 | 1536 |
asammdf 2.6.5 v4 nodata | 15565 | 600 |
Graphical results¶
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
x86 Python results¶
Benchmark environment
- 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)
- compression = mdfreader mdf object created with compression=blosc
- compression bcolz 6 = mdfreader mdf object created with compression=6
- noDataLoading = mdfreader mdf object read with noDataLoading=True
Files used for benchmark:
- 183 groups
- 36424 channels
Raw data¶
Open file | Time [ms] | RAM [MB] |
---|---|---|
asammdf 2.6.5 mdfv3 | 916 | 286 |
asammdf 2.6.5 nodata mdfv3 | 623 | 118 |
mdfreader 0.2.6 mdfv3 | 3373 | 458 |
mdfreader 0.2.6 compress mdfv3 | 4526 | 184 |
mdfreader 0.2.6 compress bcolz 6 mdfv3 | 4518 | 940 |
mdfreader 0.2.6 noDataLoading mdfv3 | 1833 | 120 |
asammdf 2.6.5 mdfv4 | 2214 | 330 |
asammdf 2.6.5 nodata mdfv4 | 1695 | 150 |
mdfreader 0.2.6 mdfv4 | 6348 | 870 |
mdfreader 0.2.6 compress mdfv4 | 7262 | 586 |
mdfreader 0.2.6 compress bcolz 6 mdfv4 | 7552 | 1294 |
mdfreader 0.2.6 noDataLoading mdfv4 | 4797 | 522 |
Save file | Time [ms] | RAM [MB] |
---|---|---|
asammdf 2.6.5 mdfv3 | 462 | 290 |
asammdf 2.6.5 nodata mdfv3 | 521 | 125 |
mdfreader 0.2.6 mdfv3 | 9175 | 481 |
mdfreader 0.2.6 compress mdfv3 | 9727 | 452 |
mdfreader 0.2.6 compress bcolz 6 mdfv3 | 9284 | 940 |
asammdf 2.6.5 mdfv4 | 657 | 334 |
asammdf 2.6.5 nodata mdfv4 | 710 | 159 |
mdfreader 0.2.6 mdfv4 | 6706 | 891 |
mdfreader 0.2.6 compress mdfv4 | 7030 | 851 |
mdfreader 0.2.6 compress bcolz6 mdfv4 | 6693 | 1311 |
Get all channels (36424 calls) | Time [ms] | RAM [MB] |
---|---|---|
asammdf 2.6.5 mdfv3 | 791 | 291 |
asammdf 2.6.5 nodata mdfv3 | 18430 | 128 |
mdfreader 0.2.6 mdfv3 | 78 | 457 |
mdfreader 0.2.6 compress mdfv3 | 738 | 187 |
mdfreader 0.2.6 compress bcolz 6 mdfv3 | 299 | 941 |
asammdf 2.6.5 mdfv4 | 863 | 334 |
asammdf 2.6.5 nodata mdfv4 | 20637 | 157 |
mdfreader 0.2.6 mdfv4 | 77 | 869 |
mdfreader 0.2.6 compress mdfv4 | 653 | 593 |
mdfreader 0.2.6 compress bcolz 6 mdfv4 | 313 | 1301 |
Convert file | Time [ms] | RAM [MB] |
---|---|---|
asammdf 2.6.5 v3 to v4 | 3843 | 680 |
asammdf 2.6.5 v3 to v4 nodata | 4656 | 242 |
asammdf 2.6.5 v4 to v3 | 4261 | 681 |
asammdf 2.6.5 v4 to v3 nodata | 5231 | 225 |
Merge files | Time [ms] | RAM [MB] |
---|---|---|
asammdf 2.6.5 v3 | 10058 | 1248 |
asammdf 2.6.5 v3 nodata | 11174 | 363 |
asammdf 2.6.5 v4 | 14232 | 1282 |
asammdf 2.6.5 v4 nodata | 14629 | 380 |
Graphical results¶
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)
(Source code, png, hires.png, pdf)