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

Regain performance degradation from 1.5 b40 for deeply inherited classes -- speed up

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: P4 P4
    • 5.0-pool
    • 5.0
    • tools

      This is a follow-on to bug
      5048019: Huge performance regression in javadoc in Tiger b40 for deeply inherited classes

      Dear Sirs,

      I don't consider this bug as beeing fixed in Tiger (1.5) build b59 as stated in
      http://java.sun.com/j2se/1.5.0/snapshots/jdk15.b59.bugsfixed.list.html. My small
      test showing the problem uses ten classes (see below) extending JPanel.

      Using the follwing command:

      javadoc -sourcepath . -classpath . -subpackages de -breakiterator -d ./doc -private -encoding iso8859-1 -use -splitindex

      for jdk1.4.2_04, jdk1.5.0-beta3-b57 and jdk1.5.0-beta3-b59 gives me the
      following execution times on my system:

      jdk version | time/sec. | factor
      ---------------------------------------
      jdk1.4.2_04 | 6.5 | 1.0
      jdk1.5.0-beta3-b57 | 90.0 | 13.8
      jdk1.5.0-beta3-b59 | 37.4 | 5.8

      Even jdk1.5.0-beta3-b59 is more than two times faster than jdk1.5.0-beta3-b57 it
      is still a lot slower (about six times) than jdk1.4.2_04 which makes it nearly
      useless for large projects. Please do invest some more time to resolve this
      problem.

      Best regards,
      MG


      Sample classes used for my test:

      package de.mypackage;
      import javax.swing.*;
      /**
       * A derived JPanel.
       */
      public class MyPanel0 extends JPanel {
          /**
           * Create a new MyPanel0 object.
           */
          public MyPanel0() {
              super();
          }
          /**
           * A dummy method.
           *
           * @param aValue The value to be returned from this method.
           *
           * @return The value given to this method.
           */
          public int someMethod(int aValue) {
              return aValue;
          }
      }

      package de.mypackage;
      import javax.swing.*;
      /**
       * A derived JPanel.
       */
      public class MyPanel1 extends JPanel {
          /**
           * Create a new MyPanel1 object.
           */
          public MyPanel1() {
              super();
          }
          /**
           * A dummy method.
           *
           * @param aValue The value to be returned from this method.
           *
           * @return The value given to this method.
           */
          public int someMethod(int aValue) {
              return aValue;
          }
      }

      package de.mypackage;
      import javax.swing.*;
      /**
       * A derived JPanel.
       */
      public class MyPanel2 extends JPanel {
          /**
           * Create a new MyPanel2 object.
           */
          public MyPanel2() {
              super();
          }
          /**
           * A dummy method.
           *
           * @param aValue The value to be returned from this method.
           *
           * @return The value given to this method.
           */
          public int someMethod(int aValue) {
              return aValue;
          }
      }

      package de.mypackage;
      import javax.swing.*;
      /**
       * A derived JPanel.
       */
      public class MyPanel3 extends JPanel {
          /**
           * Create a new MyPanel3 object.
           */
          public MyPanel3() {
              super();
          }
          /**
           * A dummy method.
           *
           * @param aValue The value to be returned from this method.
           *
           * @return The value given to this method.
           */
          public int someMethod(int aValue) {
              return aValue;
          }
      }

      package de.mypackage;
      import javax.swing.*;
      /**
       * A derived JPanel.
       */
      public class MyPanel4 extends JPanel {
          /**
           * Create a new MyPanel4 object.
           */
          public MyPanel4() {
              super();
          }
          /**
           * A dummy method.
           *
           * @param aValue The value to be returned from this method.
           *
           * @return The value given to this method.
           */
          public int someMethod(int aValue) {
              return aValue;
          }

      Additional classes missing because of size limit for comments.


      2004-07-28 18:31:49
      f?ge

      Hello,

      I agree with mgoe, because my experience is much the same.

      Generating javadoc for my framework took around one minute from 1.4 up to 1.5beta2,
      but with 1.5beta3-b55 it took about 9 minutes, whereas now, under b59, it takes 4 minutes: still four times longer!

      The number of jdk source files to lookup increased in the tiger release "only" by 20-25 percent,
      so this performance decrease of javadoc is not a decoration in the evolution of the java platform.

      Regards
      AF
      ###@###.### 10/15/04 03:44 GMT

            bpatel Bhavesh Patel (Inactive)
            dkramersunw Douglas Kramer (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: