Performance

Please note that historical data is shown in this document. Results of more complete benchmarks will be published with later versions. Performance results for total execution times less than a few tens of seconds should be considered inaccurate.

Machines

Performance measurements for the following machines are available

Machine label CPU RAM OS Notes
i7-3610 laptop Intel Core i7-3610QM @ 2.30 GHz 8 GB Windows 7 (+cygwin) Lenovo T530 laptop
i7-4600U laptop Intel Core i7-4600U @ 2.10 GHz 16 GB Windows 10 (+cygwin) Dell Latitude E7240 laptop
i7-4790 desktop Intel Core i7-4790 @ 3.60 GHz 32 GB Ubuntu Linux Generic desktop machine
i7-6820HQ laptop Intel Core i7-6820HQ @ 2.70 GHz 16 GB Windows 10 (+cygwin) Dell Latitude E5570
c3.large Intel Xeon E5-2680 v2 (Ivy Bridge), 2 vCPU 3.75 GB Amazon Linux Amazon EC2 instance
c3.2xlarge Intel Xeon E5-2680 v2 (Ivy Bridge), 8 vCPU 15 GB Amazon Linux Amazon EC2 instance
c3.4xlarge Intel Xeon E5-2680 v2 (Ivy Bridge), 16 vCPU 30 GB Amazon Linux Amazon EC2 instance
c3.8xlarge Intel Xeon E5-2680 v2 (Ivy Bridge), 32 vCPU 60 GB Amazon Linux Amazon EC2 instance
r3.8xlarge Intel Xeon E5-2670 v2 (Ivy Bridge), 32 vCPU 244 GB Amazon Linux Amazon EC2 instance
x1.32xlarge Intel Xeon E7-8880 v3 (Haswell), 128 vCPU 1952 GB Amazon Linux Amazon EC2 instance

For details on Amazon EC2 instances see Amazon EC2 Instance Types and Amazon EC2 Pricing

Master molecule store creation

Machine Dataset Size Total time Time per one Speed
i7-3610 laptop nci-250k 250 k 89 s 358 us 170 k/min
i7-3610 laptop zinc-all 22 M 1256 s 55 us 1.1 M/min
i7-4600U laptop nci-250k 250 k 28 s 111 us 540 k/min
i7-4600U laptop chembl 1.5 M 183 s 116 us 518 k/min
i7-4790 desktop nci-250k 250 k 11 s 44 us 1.4 M/min
i7-4790 desktop zinc-all 16 M 477 s 28 us 2.1 M/min
i7-4790 desktop chembl 1.4 M 88 s 60 us 1 M/min
i7-6820HQ laptop nci-250k 250 k 14 s 60 us 1 M/min
i7-6820HQ laptop chembl 1.5 M 66 s 43 us 1.4 M/min
i7-6820HQ laptop emolecules-plus 8 M 195 s 25 us 2.4 M/min
i7-6820HQ laptop surechembl 16 M 550 s 35 us 1.7 M/min
c3.large nci-250k 250 k 318 s 1279 us 46 k/min
c3.2xlarge zinc-all 22 M 1169 s 51 us 1.2 M/min
c3.4xlarge nci-250k 250 k 45 s 182 us 330 k/min
c3.4xlarge zinc-all 22 M 660 s 29 us 2 M/min
c3.8xlarge zinc-all 22 M 382 s 16 us 3.8 M/min
r3.8xlarge GDB-12 123 M 493 s 4 us 15.1 M/min
r3.8xlarge GDB-13 977 M 4309 s 4 us 13.7 M/min
x1.32xlarge zinc-all 16 M 161 s 10 us 6.2 M/min
x1.32xlarge pubchem 68 M 535 s 8 us 7.7 M/min

Please note that the size discrepancy of the zinc-all dataset (16M vs 22M) comes from using an older version of the dataset with the i7-3610 measurement.

Fingerprint calculation

Machine Dataset Size Fingerprint Total Time Time per one Speed
i7-3610 laptop nci-250k 250 k ECFP-4 14 s 58 us 1 M/min
i7-3610 laptop nci-250k 250 k CFP-4 15 s 62 us 967 k/min
i7-3610 laptop nci-250k 250 k CFP-7 18 s 75 us 800 k/min
i7-3610 laptop nci-250k 250 k CFP-10 23 s 93 us 645 k/min
i7-3610 laptop zinc-all 22 M ECFP-4 1881 s 82 us 732 k/min
i7-3610 laptop zinc-all 22 M CFP-10 1552 s 68 us 882 k/min
i7-4600U laptop nci-250k 250 k CFP-7 26 s 106 us 565 k/min
i7-4600U laptop nci-250k 250 k ECFP-4 24 s 89 us 677 k/min
i7-4600U laptop chembl 1.5 M CFP-7 214 s 135 us 444 k/min
i7-4600U laptop chembl 1.5 M ECFP-4 186 s 117 us 511 k/min
i7-4790 desktop zinc-all 16 M ECFP-4 474 s 28 us 2.1 M/min
i7-4790 desktop zinc-all 16 M CFP-7 597 s 35 us 1.7 M/min
i7-6820HQ laptop nci-250k 250 k CFP-7 12 s 50 us 1.2 M/min
i7-6820HQ laptop chembl 1.5 M CFP-7 74 s 50 us 1.2 M/min
i7-6820HQ laptop emolecules-plus 8 M CFP-7 238 s 30 us 2 M/min
i7-6820HQ laptop surechembl 16 M CFP-7 724 s 46 us 1.3 M/min
c3.large nci-250k 250 k ECFP-4 43 s 173 us 347 k/min
c3.2xlarge zinc-all 22 M ECFP-4 1093 s 48 us 1.3 M/min
c3.2xlarge zinc-all 22 M CFP-7 1212 s 53 us 1.1 M/min
c3.2xlarge zinc-all 22 M CFP-10 2125 s 93 us 645 k/min
c3.4xlarge nci-250k 250 k ECFP-4 9 s 36 us 1.7 M/min
c3.4xlarge nci-250k 250 k CFP-4 11 s 45 us 1.3 M/min
c3.4xlarge zinc-all 22 M ECFP-4 561 s 24 us 2.5 M/min
c3.4xlarge zinc-all 22 M CFP-7 619 s 27 us 2.2 M/min
c3.4xlarge zinc-all 22 M CFP-10 754 s 33 us 1.8 M/min
c3.8xlarge nci-250k 250 k ECFP-4 7 s 28 us 2.1 M/min
c3.8xlarge zinc-all 22 M ECFP-4 321 s 14 us 4.3 M/min
c3.8xlarge zinc-all 22 M ECFP-10 359 s 15 us 4 M/min
c3.8xlarge zinc-all 22 M CFP-4 279 s 12 us 5 M/min
c3.8xlarge zinc-all 22 M CFP-7 332 s 14 us 4.3 M/min
c3.8xlarge zinc-all 22 M CFP-10 397 s 17 us 3.5 M/min
r3.8xlarge GDB-12 123 M CFP-7 838 s 7 us 8.8 M/min
r3.8xlarge GDB-13 977 M CFP-7 7966 s 8 us 7.3 M/min

Most similar search performance

These measurements were made using the searchStorage tool, all measurements used 1024 bit binary fingerprints. All search used MOSTSIMILAR search mode. Search speed is the average query-target comparison speed. Search time does not include file read time.

Machine Dataset Size Queries Search time Search speed
i7-4790 desktop zinc-all 16 M 1 1.1 s 14 M/s
i7-4790 desktop zinc-all 16 M 10 1.2 s 133 M/s
i7-4790 desktop zinc-all 16 M 100 8.5 s 194 M/s
i7-4790 desktop zinc-all 16 M 1000 69.7 s 238 M/s
r3.8xlarge zinc-all 16 M 1 4.0 s 4 M/s
r3.8xlarge zinc-all 16 M 10 4.6 s 35 M/s
r3.8xlarge zinc-all 16 M 100 21.4 s 297 M/s
r3.8xlarge zinc-all 16 M 1000 29.7 s 558 M/s
r3.8xlarge zinc-all 16 M 2000 55.3 s 601 M/s
x1.32xlarge zinc-all 16 M 1 5.8 s 3 M/s
x1.32xlarge zinc-all 16 M 10 5.7 s 29 M/s
x1.32xlarge zinc-all 16 M 100 5.2 s 316 M/s
x1.32xlarge zinc-all 16 M 1000 32.0 s 1300 M/s
x1.32xlarge zinc-all 16 M 2000 38.8 s 2200 M/s

Startup performance

Typical startup performance for reading molecular descriptors from large binary files was measured around 0.5 M/s - 1.5 M/s across various machines. This translates to several 10s of MB/s sustained read speed.

Memory requirements

Current implementation keep every relevant data in memory, thus the memory requirements are related to the number of structures, fingerprints and chosen fingerprint length. For large sets, using a single 1024 bit binary fingerprint as the descriptor the required memory of the current implementation can be estimated as 250-350 MB / million structures handled. This translates to the handling capacity of around 3-4 M structures per GB of available memory.