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

CloneUtils deepCloneObject Performance Improvement

    Details

    • Type: Improvement Improvement
    • Status: Closed Closed
    • Priority: Critical Critical
    • Resolution: Won't Fix
    • Affects Version/s: 2.2
    • Fix Version/s: 2.3
    • Component/s: Performance
    • Security Level: Public (Public: Anyone can view)
    • Labels:
      None
    • Similar issues:
      KULRICE-8961CloneUtils getFieldsWithAnnotation Performance Improvement
      KULRICE-8957CloneUtils getFields Performance Improvement
      KULRICE-9313Perform experiment on cloning for performance improvements
      KULRICE-8448Improve Role Performance
      KULRICE-6735Document the Performance Improvements
      KULRICE-11177Need JPA related caching functionality to improve performance and support clustering
      KULRICE-14218Release 2.3.7 with KRMS performance improvements
      KULRICE-6557Improve Performance and Memory Consumption
      KULRICE-8918Improved KRAD collections performance
      KULRICE-12491Performance improvement for readXml in XmlHelper
    • Rice Module:
      KRAD
    • KAI Review Status:
      Not Required
    • KTI Review Status:
      Not Required

      Description

      CloneUtils' deepCloneObject method is performing a getAnnotation reflection call to acquire annotations of type: ReferenceCopy.

      This call is being executed against every field in the process of deep cloning, and there are 3 fields in the application which actually have this annotation. With sufficient load, you'll hit another synchronize block in the nested declaredAnnotations() method in java.lang.reflect.Field. This will cause threads to be blocked and performance will degrade substantially. I hit this bottleneck around 45 to 60 concurrent threads doing lookups.

      This also accounts for a good portion of cpu time which can be avoided by caching which fields have the annotation.

        Activity

        Hide
        Jeff Domeyer (Inactive) added a comment -

        Attaching current refactoring of cloneutils that I have

        Show
        Jeff Domeyer (Inactive) added a comment - Attaching current refactoring of cloneutils that I have
        Hide
        Jerry Neal (Inactive) added a comment -

        Removing the use of CloneUtils so this is not longer relevant

        Show
        Jerry Neal (Inactive) added a comment - Removing the use of CloneUtils so this is not longer relevant

          People

          • Assignee:
            Unassigned
            Reporter:
            Jeff Domeyer (Inactive)
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Structure Helper Panel