branca
branca copied to clipboard
Faster linear_gradient to improve test speed
Addresses https://github.com/python-visualization/branca/issues/174.
Our tests are very slow because of the linear_gradient function. Speed it up without incorporating a new dependency like Numpy.
How do we know this new implementation is correct? I made tests that pass on the old version and also on the new version. That should give confidence the output of both versions is exactly the same.
Performance:
import timeit
from branca.utilities import linear_gradient
%timeit linear_gradient(["#FF0000", "#00FF00", "#0000FF"], 10)
Old version:
1.82 ms ± 18.8 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
New version:
7.46 μs ± 39.6 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)
That's roughly 250 times faster. The tests now run in seconds, which was 4 to 7 minutes before.