branca icon indicating copy to clipboard operation
branca copied to clipboard

Faster linear_gradient to improve test speed

Open Conengmo opened this issue 9 months ago • 0 comments

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.

Conengmo avatar Mar 15 '25 16:03 Conengmo