sageserpent-open / plutonium

CQRS providing bitemporal object modelling for Java POJOs and Scala too.
MIT License
5 stars 0 forks source link

Change 'BlobStorageImplementation' to provide linear performance scaling. #38

Closed sageserpent-open closed 6 years ago

sageserpent-open commented 6 years ago

Found a glaring problem and fixed it - namely handling of exploded lifecycles when making a revision of a blob storage instance, this was causing all of the lifecycles to be examined, thus leading to quadratic behaviour. Running both the method count and timing benchmarks reveals linear scaling, this is now being extended to see if further non-linear behaviour occurs when yet more events are added in.

sageserpent-open commented 6 years ago

Fixed quite a few problems dotted around hither and thither - see the commit graph for the full list of issues. These are in 'AllEventsImplementation' and 'TimelineImplementation' - which means that the issue title isn't accurate. Nevertheless, the real purpose of this issue's work is to provide linear performance scaling, and at last it's arrived.

sageserpent-open commented 6 years ago

See the graphs below - the x-axis is the number of events booked in (including corrections and annulments), the y-axis is the total time in milliseconds.

quicktimings

lessquicktimings

longertimings