Kuali Rice Development
  1. Kuali Rice Development
  2. KULRICE-6757

KSPD: Investigate Optimization options for ViewServiceImpl

    Details

    • Type: Task Task
    • Status: In Progress In Progress
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 2.2.0-m4
    • Fix Version/s: Backlog
    • Security Level: Public (Public: Anyone can view)
    • Labels:
    • Similar issues:
      KULRICE-6706KSPD: Updates to JSON version
      KULRICE-6588Rice: KSPD explore Yourkit for Performance Testing
      KULRICE-46Investigate SSO options for Rice
      KULRICE-9045ViewServiceImpl - buildView - DB Connections
      KULRICE-10360Investigate a reset option for dialog groups
      KULRICE-6719Add LOG level checks to logging in ViewServiceImpl buildView and getViewById
      KULRICE-9432Optimize code in ViewHelperServiceImpl
      KULRICE-13166Investigate better option to materialize sub objects in JPA
      KULRICE-2673Optimize the RuleService.getDuplicateRuleId check
      KULRICE-13211Investigate attachmentTypeCode and KIM Permissions.
    • Epic Link:
    • Rice Module:
      Rice Core, KRAD
    • Application Requirement:
      Rice
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required

      Description

      In recent performance tests focusing on KRAD elements ViewServiceImpl has shown to be a potential spot in our code that could use optimization. Attached is a sheet with time breakdown for the ViewServiceImpl.bulidView which is particularly of interest.

        Issue Links

          Activity

          Hide
          Matt Sargent added a comment -

          ViewServiceImpl.bulidView java melody reported times during load test.

          Show
          Matt Sargent added a comment - ViewServiceImpl.bulidView java melody reported times during load test.
          Matt Sargent made changes -
          Field Original Value New Value
          Attachment VideServiceImpl-buildView.xlsx [ 53786 ]
          Hide
          Jerry Neal (Inactive) added a comment -

          Dan,

          This relates to the other performance Jira I assigned you.

          thanks,
          Jerry

          Show
          Jerry Neal (Inactive) added a comment - Dan, This relates to the other performance Jira I assigned you. thanks, Jerry
          Jerry Neal (Inactive) made changes -
          Assignee Jerry Neal [ jkneal ] Daniel Seibert [ dsiebert ]
          Daniel Seibert (Inactive) made changes -
          Status Open [ 1 ] In Progress [ 3 ]
          Jessica Coltrin (Inactive) made changes -
          Fix Version/s 2.2.0-m1 [ 16462 ]
          Jessica Coltrin (Inactive) made changes -
          Start Date
          Fix Date 2012-03-26 [ set to sprint end date ]
          Jerry Neal (Inactive) made changes -
          Fix Version/s 2.2.0-m2 [ 16463 ]
          Fix Version/s 2.2.0-m1 [ 16462 ]
          Jerry Neal (Inactive) made changes -
          Start Date
          Fix Date 2012-03-26 2012-05-25 [ set to sprint end date ]
          Jerry Neal (Inactive) made changes -
          Assignee Daniel Seibert [ dsiebert ] Martin Taylor [ mztaylor ]
          Hide
          Martin Taylor (Inactive) added a comment -

          Hi Jerry,

          Can you provide the steps of the performance test so I can replicate them from my local environment?

          Thanks,

          Martin

          Show
          Martin Taylor (Inactive) added a comment - Hi Jerry, Can you provide the steps of the performance test so I can replicate them from my local environment? Thanks, Martin
          Hide
          Jerry Neal (Inactive) added a comment -

          Hi Martin,

          For testing:

          1) KRAD Tab -> KRAD Testing - KNS L&F Channel -> Uif Components (Kitchen Sink)
          2) Click 'Collections' on left menu

          If you have just started up the server, click the collections page once to compile before running the profiler. I have been just profiling the initial render of the collections page.

          thanks,
          Jerry

          Show
          Jerry Neal (Inactive) added a comment - Hi Martin, For testing: 1) KRAD Tab -> KRAD Testing - KNS L&F Channel -> Uif Components (Kitchen Sink) 2) Click 'Collections' on left menu If you have just started up the server, click the collections page once to compile before running the profiler. I have been just profiling the initial render of the collections page. thanks, Jerry
          Hide
          Martin Taylor (Inactive) added a comment -

          reviewed snapshot on yourkit of the collection loading. In 9s call, found beandefinitionvalueresolver, the template tags, and the ViewServiceImpl.buildView to be some of the longest times.

          Show
          Martin Taylor (Inactive) added a comment - reviewed snapshot on yourkit of the collection loading. In 9s call, found beandefinitionvalueresolver, the template tags, and the ViewServiceImpl.buildView to be some of the longest times.
          Hide
          Jerry Neal (Inactive) added a comment -

          Thanks Martin.

          Please focus on the buildView call. I will be taking a look at the other two.

          Jerry

          Show
          Jerry Neal (Inactive) added a comment - Thanks Martin. Please focus on the buildView call. I will be taking a look at the other two. Jerry
          Hide
          Martin Taylor (Inactive) added a comment -

          Notes: switched to app dynamics lite for some testing. Showed several calls related to getViewById (2,3,5 sec); tracing back with yourkit it was between its UifDictionaryIndex and the Beans generated/populated. Did some searching for ways to improve speed with bean generation/population but didn't come up with any solutions yet.

          Show
          Martin Taylor (Inactive) added a comment - Notes: switched to app dynamics lite for some testing. Showed several calls related to getViewById (2,3,5 sec); tracing back with yourkit it was between its UifDictionaryIndex and the Beans generated/populated. Did some searching for ways to improve speed with bean generation/population but didn't come up with any solutions yet.
          Hide
          Jerry Neal (Inactive) added a comment -

          Martin,

          For now just focus on the build view method. I have some ideas on the getview and template rendering. On the build view, if we could narrow down a method that is either getting call many times (and we could make some gains by gaining a few milliseconds for each call) that would give us something to start with.

          thanks,
          Jerry

          Show
          Jerry Neal (Inactive) added a comment - Martin, For now just focus on the build view method. I have some ideas on the getview and template rendering. On the build view, if we could narrow down a method that is either getting call many times (and we could make some gains by gaining a few milliseconds for each call) that would give us something to start with. thanks, Jerry
          Hide
          Martin Taylor (Inactive) added a comment -
          • testing getCanonicalName in the CloneUtils::getFields to see if I can improve performance there
          Show
          Martin Taylor (Inactive) added a comment - testing getCanonicalName in the CloneUtils::getFields to see if I can improve performance there
          Hide
          Martin Taylor (Inactive) added a comment -

          Spending time trying to make use of the KRADTestCase and junit-performance in the testing of collectionGroupBuilder, Running into issues when building the Uif objects (running performInitialization at part of the before). Need to find out more about the cloneUtils and why they are used in place of a pre-existing solution (XStream, another java deep cloning util) and if one of those tools would work/would be faster (via kradtestcase/junit-pref)

          Show
          Martin Taylor (Inactive) added a comment - Spending time trying to make use of the KRADTestCase and junit-performance in the testing of collectionGroupBuilder, Running into issues when building the Uif objects (running performInitialization at part of the before). Need to find out more about the cloneUtils and why they are used in place of a pre-existing solution (XStream, another java deep cloning util) and if one of those tools would work/would be faster (via kradtestcase/junit-pref)
          Jerry Neal (Inactive) made changes -
          Fix Version/s 2.2.0-m3 [ 16464 ]
          Fix Version/s 2.2.0-m2 [ 16463 ]
          Jerry Neal (Inactive) made changes -
          Start Date
          Fix Date 2012-05-25 2012-07-23 [ set to sprint end date ]
          Jerry Neal (Inactive) made changes -
          Fix Version/s 2.2.0-m4 [ 16598 ]
          Fix Version/s 2.2.0-m3 [ 16464 ]
          Jerry Neal (Inactive) made changes -
          Start Date
          Fix Date 2012-07-23 2012-08-13 [ set to sprint end date ]
          Hide
          Jessica Coltrin (Inactive) added a comment -

          moving non-blocker and non-critical m4 Jiras to 2.2-backlog

          Show
          Jessica Coltrin (Inactive) added a comment - moving non-blocker and non-critical m4 Jiras to 2.2-backlog
          Jessica Coltrin (Inactive) made changes -
          Fix Version/s 2.2-backlog [ 16475 ]
          Fix Version/s 2.2 [ 16411 ]
          Fix Version/s 2.2.0-m4 [ 16598 ]
          Matt Sargent made changes -
          Fix Version/s 2.2 [ 16411 ]
          Affects Version/s 2.2.0-m4 [ 16598 ]
          Jessica Coltrin (Inactive) made changes -
          Fix Version/s 2.2.1 [ 16733 ]
          Fix Version/s 2.2 [ 16411 ]
          Fix Version/s 2.2-backlog [ 16475 ]
          Jessica Coltrin (Inactive) made changes -
          Fix Version/s 2.3-backlog [ 16596 ]
          Fix Version/s 2.2.1 [ 16733 ]
          Jerry Neal (Inactive) made changes -
          Fix Version/s 2.3 [ 16595 ]
          Fix Version/s 2.3-backlog [ 16596 ]
          Assignee Martin Taylor [ mztaylor ]
          Jerry Neal (Inactive) made changes -
          Link This issue relates to KULRICE-6557 [ KULRICE-6557 ]
          Jessica Coltrin (Inactive) made changes -
          Fix Version/s 2.4 [ 16913 ]
          Fix Version/s 2.3 [ 16595 ]
          Jessica Coltrin (Inactive) made changes -
          Fix Version/s 2.4-backlog [ 16596 ]
          Fix Version/s 2.4 [ 16913 ]
          Jerry Neal (Inactive) made changes -
          Epic Link KULRICE-10089 [ 120211 ]
          Shem Patterson (Inactive) made changes -
          Workflow custom [ 133549 ] Copy of custom for rice [ 208317 ]
          Shem Patterson (Inactive) made changes -
          Workflow Copy of custom for rice [ 208317 ] custom [ 218065 ]
          Shem Patterson (Inactive) made changes -
          Workflow custom [ 218065 ] Rice Workflow [ 227813 ]
          Jessica Coltrin (Inactive) made changes -
          Fix Version/s 2.4 [ 16913 ]
          Fix Version/s 2.4-backlog [ 16596 ]
          Jerry Neal (Inactive) made changes -
          Component/s Development [ 11244 ]
          Component/s User Experience (UX) [ 13465 ]
          Component/s Performance [ 13588 ]
          Jerry Neal (Inactive) made changes -
          Fix Version/s Backlog [ 15811 ]
          Fix Version/s 2.4 [ 16913 ]
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Kristina Taylor (Inactive) made changes -
          Rank Ranked higher
          Eric Westfall made changes -
          Labels Old

            People

            • Assignee:
              Unassigned
              Reporter:
              Matt Sargent
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:

                Structure Helper Panel