Hi,
    
    could I get reviews for this small patch?
    
    Bug: https://bugs.openjdk.java.net/browse/JDK-8034839
    
    Problem:          The problem is that the patch (7194669) - which was supposed to     speed-up dependency checking
                   causes a performance regression. The reason for the     performance regression is that most dependencies 
                   are unique, so we have the overhead of determining if     the dependency is already checked plus the
                   overhead of dependency checking. The overhead of     searching is significant, since we perform 
                   a linear search on 6000+ items each time.
    
    Solution: Use a hashtable instead of linear search to lookup already     checked dependencies. The new hashtable 
                   is very rudimentary. It provides only the required     functionality to solve this bug. However, the functionality
                   can be easily extended as needed. 
    
    Testing: jprt, failing test case, nashorn. The failing test case     completes in approx. the same time as before 7194669.
                 For nashorn + Octane, this patch yields the following     times spent for dependency checking:
    
                  with this patch:  844s
                           7194669: 1080s
               before 7194669: 5223s
    
    webrev: http://cr.openjdk.java.net/~anoll/8034939/webrev.00/
    
    Thanks,
    Albert
    
   ">

(original) (raw)

Hi,

could I get reviews for this small patch?

Bug: https://bugs.openjdk.java.net/browse/JDK-8034839

Problem: The problem is that the patch (7194669) - which was supposed to speed-up dependency checking
               causes a performance regression. The reason for the performance regression is that most dependencies
               are unique, so we have the overhead of determining if the dependency is already checked plus the
               overhead of dependency checking. The overhead of searching is significant, since we perform
               a linear search on 6000+ items each time.

Solution: Use a hashtable instead of linear search to lookup already checked dependencies. The new hashtable
               is very rudimentary. It provides only the required functionality to solve this bug. However, the functionality
               can be easily extended as needed.

Testing: jprt, failing test case, nashorn. The failing test case completes in approx. the same time as before 7194669.
             For nashorn + Octane, this patch yields the following times spent for dependency checking:

              with this patch:  844s
                       7194669: 1080s
           before 7194669: 5223s

webrev: http://cr.openjdk.java.net/\~anoll/8034939/webrev.00/

Thanks,
Albert