Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6467258

Slow javac performance in linux when using nonstandard language setting

XMLWordPrintable

    • x86
    • linux

      FULL PRODUCT VERSION :
      java version "1.5.0_08"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
      Java HotSpot(TM) Client VM (build 1.5.0_08-b03, mixed mode)


      ADDITIONAL OS VERSION INFORMATION :
      Linux mcristi 2.6.17-gentoo-r4 #6 SMP Fri Aug 18 15:42:53 EEST 2006 i686 Intel(R) Pentium(R) 4 CPU 3.00GHz GNU/Linux


      EXTRA RELEVANT SYSTEM CONFIGURATION :
      The system wide LANG environment variable:

      LANG = "ro_RO.ISO-8859-16"

      A DESCRIPTION OF THE PROBLEM :
      On my linux system I have the environment variable LANG="ro_RO.ISO-8859-16"
      Then when I use javac to compile any class is very slow (at least two times slower then normal).
      When I change the lang setting and I use LANG="ro_RO.ISO-8859-1", the javac performance is back to normal (faster).

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      The steps assume you have a recent gentoo linux and a bash shell and a recent jdk 1.5.0. The bug should manifest on other linux systems but the commands that you must use on the terminal might be differrent.

      First compile a java class to see how long it takes under normal conditions (run it at least 3 times):
      root@localhost ~ $ javac -verbose Test.java

      Second define the locale using the root account:
      root@localhost ~ $ localedef -i ro_RO -f ISO-8859-16 ro_RO.ISO-8859-16

      Then set the LANG environment variable:
      root@localhost ~ $ export LANG="ro_RO.ISO-8859-16"

      Compile the same java class to see how long it takes now (run it at least 3 times):
      root@localhost ~ $ javac -verbose Test.java


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      The compiler should issue a warning saying that it will not use ISO-8859-16 enconding but will use ISO-8859-1 instead.
      The parsing time and total compile time will be displayed among other informations on the console assuming you used -verbose parameter.

      ACTUAL -
        Total time displayed at the end is at least two or three times larger than normal.
      Running the compiler at least 3 times would improve the timings but still is much slower.

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      the class that I used to test the compiler:

      the file is named Test.java

      public class Test {
          public static void main(String[] args) {
         }
      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      I can bypass this bug by setting the LANG variable to be:

      LANG="ro_RO.ISO-8859-1"

            Unassigned Unassigned
            ndcosta Nelson Dcosta (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Imported:
              Indexed: