EGL Development User Group

EGL Development User Group

EGL Development User Group

The EGL Development User Group is dedicated to sharing news, knowledge, and insights regarding the EGL language and Business Developer product. Consisting of IBMers, HCL, and users, this community collaborates to advance the EGL ecosystem.

 View Only

Java Performance Improvements in RBD 8.0.1.2 and 8.0.1.3

By Jiyong Huang posted Wed April 01, 2020 09:19 PM

  
Every new version of Rational Business Developer includes some performance enhancements.  In the most recent fix packs for Rational Business Developer, 8.0.1.2 and  8.0.1.3, 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 8.0.1.2 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 8.0.1.2 linkType=LIBRARY is only supported when you generate Java, but you can also use it when generating COBOL with version 8.0.1.3.)
 
Improvements to 8.0.1.3 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 8.0.1.3 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 8.0.1.3 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 8.0.1.3 runtime.  System functions in LobLib (loadBlobFromFile, loadClobFromFile, updateBlobToFile, updateClobToFile) and serial records make better use of buffers than before. 
 
Matt
developer, EGL Java generator and runtime
 
0 comments
1 view

Permalink