External tools/FITS performance
JVM startup lag
A significant part of FITS's startup is spent instantiating the JVM, which is relatively slow. To speed this up, it may be possible to use the nailgun tool, which creates a single shared JVM instance that a tool can connect to, thus bypassing the overhead of needing to start up a JVM every time FITS is run.
A simple test of FITS's startup time was performed using the `fits -h` help command; since the help command performs no actual characterization, most of the time of running this command is spent creating a JVM. Results:
Benchmarks
- Average time without a persistent JVM, averaged over 10 iterations: 4.2852s
- Average time with a persistent Nailgun JVM, averaged over 10 iterations: 1.7022s
DROID startup
The other largest component of FITS startup is the DROID component. The official FITS 0.6.2 uses an older version of DROID, which takes approximately a second to load its signature data at startup. Gary McGath's fork of FITS has been updated to use a more modern version of DROID, substantially improving startup time
Benchmarks
- Average startup time for FITS 0.6.2 (with Nailgun), averaged over 10 iterations: 1.7022s
- Average time for FITS-McGath 0.7.5 (with Nailgun), over 10 iterations: 0.7526s