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.
As far as I can see, cell_map is typically a list with a single tuple. This function call incurs tremendous function overhead for doing nothing (multiplying a single number with 1): first we generate a list, then go through all the NumPy dispatching.
If this indeed is the common case, it's much faster to avoid creating a list (using a generator) and using the simple Python math.prod.
Equivalently, we could use
This is mostly a matter of taste (the performance is identical).
For the simple case of merging a model with itself, this yielded a speed-up of the factor 4 for me. Can you please comment @paulbkoch if my assumptions are correct, or if there are use cases I am overlooking?
This speed up is part of PR #578. It doesn't seem that I'll find the time soon to fix the remaining bug in
_harmonize_tensor
. So I thought it's a good idea to include this performance improvement right away.