image-rs / imageproc

Image processing operations
MIT License
758 stars 149 forks source link

improved draw_text_mut performance #663

Closed Icekey closed 5 months ago

Icekey commented 5 months ago

I noticed during profiling that most of the time was spend just rounding numbers. It turned out that the min of the bounding box was rounded for every pixel in the "draw_text_mut" function.

In my testing the fix improved performace by a lot. For example drawing the text in the font.rs example 500000 times went from 22 sec down to 12 sec. The performance improvement is even better for texts with a larger font size. In one of my benchmarks the execution time went from 14.6 sec to 2.7 sec.

I also moved the "gv.clamp(0.0, 1.0)" into the if block, since it was not need before it, but this did not noticably change performance.

theotherphil commented 5 months ago

Thanks!

(Aside: text drawing regression tests https://github.com/image-rs/imageproc/issues/244 would be really useful to help avoid breakages from refactoring in this area!)