Skip to content
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
Closed

Optimzation and Performance Issues #290

philip-alldredge opened this issue Feb 14, 2018 · 2 comments
Assignees
Labels
Milestone

Comments

@philip-alldredge
Copy link
Contributor

@philip-alldredge 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
Copy link
Contributor Author

@philip-alldredge 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
Copy link
Contributor Author

@philip-alldredge 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.
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
1 participant