Table of Contents
Performance Tips
Improving Performance with Large Data Sets
Here are some tips for maximizing performance with large data sets:
- Import smiles format files rather than Marvin or SDF, as smiles is much more compact.
- Avoid sorting large data sets. Specify a better query to reduce the size first!
- Close any unused database connections and restart IJC - databases that have been opened
will be using up valuable memory.
- Close any unused views of other database tables from the database connection you are
using, then restart IJC. Added views can also slow performance by using up memory.
- Close all data windows before you shutdown IJC. That way they will not need to be
restored when you restart, and startup time will be better.
- Use a remote database (Oracle of MySQL) rather than a local database (this requires
an Instant JChem license). For information on purchasing a license, please email:
sales at chemaxon dot com
Running Java in server mode
Some versions of Java can operate in a "server" mode which
can improve performance, but at the expense of start up time.
This is mainly designed for long running server process which start once
and then run for a long time.
Tests with Instant JChem have shown that running in server mode can provide
a significant performance gain, particularly for structure searches and chemical
terms calculations (approximately 20% faster), but this comes at the expense of
slower startup time (approx 2-3 times slower).
If you wish to try this you can edit the IJC startup script to use a version
of Java that supports server mode and specify the -server flag (note: the
version of Java that is installed with IJC does not support server mode):
- Close Instant JChem
- Find where Instant JChem was installed, and find the file
[instant-jchem-home]/etc/instantjchem.conf
- Make a backup of this file!
- Open this file with a text editor
- Find the line that defines the 'default_options' property. Edit
this line, adding the flag -J-server
- Uncomment the line with the jdkhome= definition and edit this to point
to a Java1.5 JDK that supports the server mode (e.g. a standard Java1.5 JDK).
- Save the changes and restart Instant JChem.
Indexes and performance
In the right circumstances adding an index to your database table can provide a significant
performance benefit, but if added innapropropriately this can actually slow things down.
Some indexes are added automatically for you where they are necessary. Others you
need to add yourself. Generally IJC performs very well without additional indexes
so you should not add any unless you know you have a performance problem that can be
solved by adding an index. Indexes will typically be of little benefit with small tables.
1. Situations where adding an index is strongly recommended
In these situations adding an index will always be expected to be of big
benefit:
- When setting the 'Distinct values' setting for a field. This will
dramatically improve the retrieval of these distinct values e.g. for display in
the query panel.
- When merging data using a field that does not already have an index. Merging
needs the value to be looked up for each imported entry, and an index will
dramatically speed this up.
2. Situations where adding an index may be benefitial
In these situations adding an index may be of benefit (but be careful to consider
the potential downside listed in the next section):
- When regularly using a field in a large table for querying or sorting
adding an index to the columns used by the field will usually improve performance.
3. Situations where adding an index should be avoided
In these situations adding an index may have a detrimental effect:
- When the data in the table is frequently being inserted, updated or deleted.
When this happens the index also has to be updated and this takes additional time.
Copyright © 1998-2008
ChemAxon Ltd.
All rights reserved.