JDK-4526794 : Significant degradation of performance from JDK1.3 to JDK1.4 on Solaris
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.util:i18n
  • Affected Version: 1.4.0
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_8
  • CPU: sparc
  • Submitted: 2001-11-13
  • Updated: 2013-11-01
  • Resolved: 2002-02-21
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
1.4.1 hopperFixed
Related Reports
Relates :  
Description
###@###.### 2001-11-13

J2SE Version (please include all output from java -version flag):
 java version "1.4.0-beta3"
 Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.0-beta3-b84)
 Java HotSpot(TM) Client VM (build 1.4.0-beta3-b84, mixed mode)

Does this problem occur on J2SE 1.3?  Yes / No (pick one)
 No

Operating System Configuration Information (be specific):
 Sun Ultra Enterprise running Solaris 8.0

Hardware Configuration Information (be specific):
 4 CPU's @ 400MHz each and 3072MB of RAM

Bug Description:
 Attached simple Java application(PerfTest.zip) shows a significant
 degradation of performance from JDK 1.3 to JDK 1.4. Under 1.4, on big
 system(4-way machine), it takes 2-4 milliseconds to create; under 1.3,
 the times are 0-1 ms. On a small system(1-way machine), the difference
 is even more obvious. Under 1.4, it takes 6-8 milliseconds to create;
 Under 1.3, the times are 1-3 milliseconds.

 Here are the test results:

1.3 results:
 1> one-way Solaris 7 Ultra 1 machine 
**** AMOL1 creation took 72 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 3 milliseconds

 2> 4x450 mhz with 4GB RAM Solaris 8 machine
**** AMOL1 creation took 25 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 0 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 0 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 0 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds
**** AMOL1 creation took 1 milliseconds

1.4 beta3 results:

  1> one-way Solaris 7 Ultra 1 machine
**** AMOL1 creation took 78 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 17 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 125 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 47 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 7 milliseconds
**** AMOL1 creation took 6 milliseconds

  2> 4x450 mhz with 4GB RAM Solaris 8 machine

**** AMOL1 creation took 29 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 4 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 2 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 3 milliseconds
**** AMOL1 creation took 2 milliseconds

Steps to Reproduce (be specific):

The attached zip(PerfTest.zip) file includes sources, jar,
build.xml (for ant build) and a 'testTime' script. This test simply loops x
times (100 is default), creating AMOL1Code objects and printing out how long
it takes to create them.

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: hopper FIXED IN: hopper INTEGRATED IN: hopper
14-06-2004

EVALUATION This performance degredation is caused by the modification of the TimeZone class getTimeZone method. This method now causes a File I/O operation to be attempted when Custom Time Zones are used. The test application uses a Custom Time Zone of "GMT-5:00". Whic gets created for each iteration of the test. This in turn causes the following I/O operations to be called: 23371: open("/net/wabi/scratch1/jdk_b83/jre/lib/zi/GMT-5:00", O_RDONLY|O_LARGEF ILE) Err#2 ENOENT 23371: stat64("/net/wabi/scratch1/jdk_b83/jre/lib/zi/GMT-5:00", 0xFFBED490) Err #2 ENOENT 23371: open("/net/wabi/scratch1/jdk_b83/jre/lib/zi/GMT-5:00", O_RDONLY|O_LARGEF The TimeZone classes should cache the results of these operations in order to minimize the overhead associated with this. ###@###.### 2001-11-26 We will consider the cache support for custome time zone objects in Hopper. ###@###.### 2001-11-27 The given time zone ID was cached under its normized form and the parsing and normalization were expensive in Merlin. In Hopper, its TimeZone object will be cached under its original ID also. Here's the result after the fix. (one sparcv9/450MHz) **** AMOL1 creation took 27 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 0 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 0 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 0 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 0 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 1 milliseconds **** AMOL1 creation took 0 milliseconds **** AMOL1 creation took 1 milliseconds ###@###.### 2002-01-18
18-01-2002