CADLabs / radCAD

A Python framework for designing, testing, and validating complex systems through modelling and simulation.
GNU General Public License v3.0
97 stars 25 forks source link

Performance regression #59

Open BenSchZA opened 2 years ago

BenSchZA commented 2 years ago

In radCAD version 0.11.0 (see CHANGELOG.md) an update was made to ensure that unintended state updates between state update functions within a single partial state update block can not be made. As a result, some models may perform worse - typically models with lots of states and state updates or with large objects in state.

There is a compromise to be made between optimising performance vs. ensuring immutability - TBC what the best solution is. It's likely that it should be handled on a case by case basis. For example, see radCAD deepcopy and deepcopy_method options.

https://github.com/CADLabs/radCAD/commit/744b5f40a1e915683e6647066c82f6c19a6659d9