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.
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.