This repository has been archived by the owner. It is now read-only.

Optimzation and Performance Issues #290

Closed
philip-alldredge opened this Issue Feb 14, 2018 · 2 comments

Comments

Projects
None yet
1 participant
@philip-alldredge
Contributor

philip-alldredge commented Feb 14, 2018

  • Hot spots based on previous profiling:
    • DefaultReferenceService.getRelativeReference
      • Caused by DI? Could be solved by converting reference builder into a fixed interface. Inject services into constructor. This could also be caused by the code building relative references for the same object repeatedly. Profile again to determine root cause. Query system/Business Object Context could be optimized to only create the appropriate reference once. Could have a special interface if necessary for the optimized case.
      • Other Notes:
        • buildSimpleRelativeReference is a small but signfiicant %.
        • RelativeBusinessObjectRference init is a signficant chunk of that too
    • GraphitiAgeDiagram.updateDiagramElement()

@philip-alldredge philip-alldredge added this to the M4 milestone Feb 14, 2018

@philip-alldredge philip-alldredge self-assigned this Feb 14, 2018

@philip-alldredge

This comment has been minimized.

Contributor

philip-alldredge commented Mar 2, 2018

The root cause seems to be building relative reference for the same objects repeatedly while executing queries. Rather than optimize the reference builder API, the query service was extended to allow diagram elements to provide its business object's relative reference. This allows queries to run without needing to build as many relative references.

@philip-alldredge

This comment has been minimized.

Contributor

philip-alldredge commented Mar 2, 2018

This optimization effects users of:
Query.descendantsByBusinessObjectsRelativeReference
Query.filterByBusinessObjectRelativeReference

This change will need significant testing before merging. The primary users of those methods are the business object handlers for business objects which are represented as connections.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.