Subject | Performance Tweak |
---|---|
Author | Ken Richard |
Post date | 2003-05-27T17:38:18Z |
I am running a profiler (numega) against my code (tomcat servlets with
jaybird 1.0) and found something that may be a small benefit for
performance but is easy to fix.
getJavaEncodings in FBConnectionHelper is called often through the stack
FBResultSet constructor
prepareVars
FBField.setConnection
getJavaEncodings
and through a similar stack involving FBPreparedStatement constructor.
The getJavaEncodings calls getDefaultJavaEncodings which looks like:
public static String getDefaultJavaEncoding() {
InputStreamReader reader = new InputStreamReader(
new ByteArrayInputStream(new byte[2]));
return reader.getEncoding();
}
There is a lot being allocated/freed there just to find the default
encodings. Would it be possible to move the code in
getDefaultJavaEncodings into loadEncodings and store the result as a
static?
For my test (which may be atypical) 1% of my code's execution time was
spent inside getDefaultJavaEncoding().
I am working with JayBird 1.0 and can supply a patch if you are
interested.
I can also give some additional performance data from the profiler if
you are interested. For example - the biggest hits I am taking from
JayBird are in GDS_Impl.parseTruncSqlInfo and GDS_Impl.isc_vax_integer
but that would be expected.
-Ken
jaybird 1.0) and found something that may be a small benefit for
performance but is easy to fix.
getJavaEncodings in FBConnectionHelper is called often through the stack
FBResultSet constructor
prepareVars
FBField.setConnection
getJavaEncodings
and through a similar stack involving FBPreparedStatement constructor.
The getJavaEncodings calls getDefaultJavaEncodings which looks like:
public static String getDefaultJavaEncoding() {
InputStreamReader reader = new InputStreamReader(
new ByteArrayInputStream(new byte[2]));
return reader.getEncoding();
}
There is a lot being allocated/freed there just to find the default
encodings. Would it be possible to move the code in
getDefaultJavaEncodings into loadEncodings and store the result as a
static?
For my test (which may be atypical) 1% of my code's execution time was
spent inside getDefaultJavaEncoding().
I am working with JayBird 1.0 and can supply a patch if you are
interested.
I can also give some additional performance data from the profiler if
you are interested. For example - the biggest hits I am taking from
JayBird are in GDS_Impl.parseTruncSqlInfo and GDS_Impl.isc_vax_integer
but that would be expected.
-Ken