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

Exponential growth in compile times when adding simple interfaces

XMLWordPrintable

    • generic
    • generic

      FULL PRODUCT VERSION :
      java version "1.8.0_131"
      Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
      Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      Microsoft Windows [Version 10.0.14393]
      (Also seen on OSX)

      A DESCRIPTION OF THE PROBLEM :
      The compile time grows exponentially when implementing additional interfaces.

      The attached sample has 15 interfaces and took 180 seconds to compile
      It took only 15 seconds when there were 13 interfaces.
      It takes several hours if adding a few more.

      REGRESSION. Last worked in version 6u45

      ADDITIONAL REGRESSION INFORMATION:
      java version "1.6.0_45"
      Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
      Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      Compile the attached code

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Compile time not increasing exponentially
      ACTUAL -
      Compile time increasing exponentially

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      package com.example;
      interface I_1 {
      public void method_1();
      }
      interface I_2 extends I_1 {
      public void method_1();
      }
      interface I_3 extends I_2, I_1 {
      public void method_1();
      }
      interface I_4 extends I_3, I_2, I_1 {
      public void method_1();
      }
      interface I_5 extends I_4, I_3, I_2, I_1 {
      public void method_1();
      }
      interface I_6 extends I_5, I_4, I_3, I_2, I_1 {
      public void method_1();
      }
      interface I_7 extends I_6, I_5, I_4, I_3, I_2, I_1 {
      public void method_1();
      }
      interface I_8 extends I_7, I_6, I_5, I_4, I_3, I_2, I_1 {
      public void method_1();
      }
      interface I_9 extends I_8, I_7, I_6, I_5, I_4, I_3, I_2, I_1 {
      public void method_1();
      }
      interface I_10 extends I_9, I_8, I_7, I_6, I_5, I_4, I_3, I_2, I_1 {
      public void method_1();
      }
      interface I_11 extends I_10, I_9, I_8, I_7, I_6, I_5, I_4, I_3, I_2, I_1 {
      public void method_1();
      }
      interface I_12 extends I_11, I_10, I_9, I_8, I_7, I_6, I_5, I_4, I_3, I_2, I_1 {
      public void method_1();
      }
      interface I_13 extends I_12, I_11, I_10, I_9, I_8, I_7, I_6, I_5, I_4, I_3, I_2, I_1 {
      public void method_1();
      }
      interface I_14 extends I_13, I_12, I_11, I_10, I_9, I_8, I_7, I_6, I_5, I_4, I_3, I_2, I_1 {
      public void method_1();
      }
      interface I_15 extends I_14, I_13, I_12, I_11, I_10, I_9, I_8, I_7, I_6, I_5, I_4, I_3, I_2, I_1 {
      public void method_1();
      }
      public class Test implements I_15, I_14, I_13, I_12, I_11, I_10, I_9, I_8, I_7, I_6, I_5, I_4, I_3, I_2, I_1 {
      public void method_1(){}
      }

      ---------- END SOURCE ----------

            jlahoda Jan Lahoda
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: