As part of a larger project, I’ve been doing some profiling on various aspects of the CDK, focusing on core cheminformatics operations. I’m using the excellent YourKit profiler to do the tests. They tests are run on a Macbook Pro (2.16GHz) with 1GB RAM, using the latest trunk version of the CDK and JDK 1.5.
The test data is a 1000-molecule subset take from the ZINC collection. The operations I’ve been looking at are
- Ring perception (AllRingsFinder)
- Aromaticity Perception (CDKHueckelAromaticityDetector)
- Atom type perception
- SDF reading (IteratingMDLReader)
- Tanimoto similarity (Tanimoto.calculate())
The test harness simply reads the 1000 molecules one by one and performs the operation in question. For certain tasks which are not atomic in nature, the code does a little more but the timing is measured only for the operation under study. In all cases, things like loading molecules from disk are not measured. The whole process is repeated 10 times and the times reported are the average of the 10 runs. A brief overview of the results: