The Question is:
We have installed java 1.4.1 on our OpenVMS System. A java program, compiled
and run on a Windows XP system using SAX to parse an XML file then write a
modified file in a nother location based off information in the XML. This
program, when run on the deve
lopment machine, will go through a 2000 line XML file in 300 milliseconds. When
run on the OpenVMS system, will take 4000+ milliseconds. All Java
environmental variables have been set according to the Java$check_environment.
I am also using the JavaVM Fas
t (Classic produces even worse results). There is a lot of page faulting as the
the program runs, reading a line, writing a line through SAX. What is the
issue that could be causing the tremendous performance difference? This
seriously affects our process
ing of very large XML files.
The Answer is :
Java is not a language that would immediately occur to the OpenVMS
Wizard for a performance-critical application -- like many similar
approaches throughout computing history, Java trades off relative
application performance and relatively higher resource useage for
a very high degree of program portability.
As has been the case with USCD pCode and other interpreters and
as is the case with Java, if you want raw performance, you will
probably not want to use an interpreter-based implementation.
This is the case on any and all platforms.
As the OpenVMS Wizard expects you will want to continue here with
Java, do consider increasing process quotas, as it appears (based
solely on your description) that the process working set or free
system memory is insufficient.
Do also ensure that process quotas are appropriately large, and
that files are in the native Stream LF format (file conversion
details are in the Java documentation), and that the RMS and
file system operations are tuned for performance -- that the
XML files are set for Stream LF, for instance.
But again, an implementation based on an interpreter is not
necessarily the best implementation choice for performance-sensitive
application processing. The Java design center is extremely high
application portability, and Java excells as an implementation
language choice for applications that match its design center.