Uploaded image for project: 'PUBLIC - Liferay Portal Community Edition'
  1. PUBLIC - Liferay Portal Community Edition
  2. LPS-42295

LayoutLister can be still slow for very deep structures

Details

    Description

      Background

      Upon investigating a customer issue, I've found three problems in LayoutLister. LPS-36049 enhances its performance, but there are still areas of improvement.

      • Method _createList() implements a DFS (Depth First Search) algorithm to traverse the layout tree recursively. As such it isn't feasible for very deep structures.
      • Searching for matching layouts based on a parentLayoutId in method createList()_ is done in O(N) complexity.
      • The LayoutView object which is created by method getLayoutView() is a good candidate for being cached in a request scoped Thread Local Cache.

      With these improvement I could lower the execution time of _createList() (with 5000+ pages) from ~250ms to ~5ms.

      Steps to reproduce

      1) Create a site called BigSite.
      2) Create ~1000 pages: 9 level deep tree, every node has 2 pages and there is one root node. Use attached Groovy script (remember to fill in groupId).
      3) Without fix applied: execute attached script (Performance_422995.groovy remember to fill in groupId) multiple times. Write down execution times from the output.

      • With fix applied:* execute attached script (Performance_422995_after_fix.groovy remember to fill in groupId) multiple times. Write down execution times from the output.

      Executions times before the fix:

      Start measuring layouts performance
      Total time:35. Number of results:2049
      

      Executions times after the fix (should be lower than before):

      Start measuring layouts performance
      Total time:16. Number of results:2049
      

      Attachments

        Issue Links

          Activity

            People

              brian.chan Brian Chan
              laszlo.csontos Laszlo Csontos (Inactive)
              Kiyoshi Lee Kiyoshi Lee
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:
                6 years, 11 weeks, 1 day ago

                Packages

                  Version Package
                  6.2.X EE
                  7.0.0 M1