Every new version of Rational Business Developer includes some performance enhancements. In the most recent fix packs for Rational Business Developer, 188.8.131.52 and 184.108.40.206, we've included even more performance improvements. In this blog entry, I'll describe some of the Java performance enhancements.
We make enhancements in the Java runtime whenever possible. There's no need for you to re-generate anything. You'll see improved performance simply by switching to a new runtime JAR file. In other cases, we make the generator create more efficient code. Sometimes you must turn on a build descriptor option in order for that to happen, but not always.
RBD 220.127.116.11 includes a new linkType value, LIBRARY, which can be used in localCall linkage. When you use it, your call statement will be generated similar to the generated code for invoking a function of a library. Parameters are passed more efficiently, and if you call the program more than once, the called program object will be reused. That will be a big speedup if the program is called many times. (In 18.104.22.168 linkType=LIBRARY is only supported when you generate Java, but you can also use it when generating COBOL with version 22.214.171.124.)
Improvements to 126.96.36.199 include several new build descriptor options. One of them is preparedStatementCacheSize. It can be especially useful if you use the cachePreparedStatements and prepareAllSqlStatements build descriptor options. By setting preparedStatementCacheSize, you can control how many prepared statements are kept in the EGL runtime's cache. In the past, if your application needed more than 100 prepared statements, the cache wasn't big enough to hold them all. Reusing a prepared statement from the cache is much faster than creating a new one. For more details, see preparedStatementCacheSize build descriptor option.
Another build descriptor option introduced in 188.8.131.52 is sqlAccessColumnsAsBytes. When you set it to YES, Rational Business Developer generates code that takes advantage of new features of the DB2 JDBC driver. "Raw" data will be fetched from the JDBC driver into your program, without the usual expense of creating Java objects like Strings and BigDecimals. (Unfortunately, the new JDBC driver APIs aren't available in all circumstances. For more details, see sqlAccessColumnsAsBytes.)
The 184.108.40.206 Java generator has some enhancements that you don't need to activate with a build descriptor option. They aim to improve the performance of structured records. First, initializing a structured record is faster than before. Second, in many cases the generator will create optimized code for assignments and comparisons involving fields of structured records.
File I/O is improved in the 220.127.116.11 runtime. System functions in LobLib (loadBlobFromFile, loadClobFromFile, updateBlobToFile, updateClobToFile) and serial records make better use of buffers than before.
developer, EGL Java generator and runtime