[BAD] refactor(gnovm): handle assignment operations in preprocess #1625
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This was an attempt at refactoring the GnoVM code and simplify AssignStmt to re-write these statements at preprocess instead of during execution. Turns out that the expansion is significant and in benchmarks which contain the
+=
operator, it slows down by up to 10%. See #1624 for the methodology used.Note: there is some improvement for
fib
, which does not use+=
and usesOpExec
(OpBody/ ...) very often, so it seems to benefit from the removed code. However, the improvement does not seem significant enough to justify the change.Creating this to document the attempt, so if someone else tries this they have some prior literature :)
Note: it seems likely to me that in
matrix_mult
, the difference is lower at higher values of the parameter (this modifies the size of the square matrix) because there is much more time spent allocating and creating sub-matrices for the computationally expensivedet
, than there is in executing its+=
operations.