Speed up image.tomography.get_next_power() #3168
Merged
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.
The module
silx.image.tomography
uses a functionget_next_power()
which, given an integern
, finds the next "friendly" power of(2, 3, 5 ,7)
. This is used for padding data before performing FFT.The current implementation builds a sorted list of numbers in the form
(2**a)*(3**b)*(5**c)*(7**d)
, and finds the "next friendly power" by bisection.Building this list takes some time, which can be noticeable if
get_next_power()
is needed many times. In this PR, the list of powers is cached in a LRU structure.