LibGfx: Add fast path for multiply() with identity transforms

This is a no-op, and exiting early is useful as it cuts time spent in
AffineTransform::multiply() from 3% to 2% when hovering links on
ziglang.org.
This commit is contained in:
Andreas Kling 2024-03-02 10:48:15 +01:00
parent e46deec846
commit c69b266e43
Notes: sideshowbarker 2024-07-17 02:56:25 +09:00

View file

@ -108,6 +108,8 @@ AffineTransform& AffineTransform::set_translation(FloatPoint t)
AffineTransform& AffineTransform::multiply(AffineTransform const& other) AffineTransform& AffineTransform::multiply(AffineTransform const& other)
{ {
if (other.is_identity())
return *this;
AffineTransform result; AffineTransform result;
result.m_values[0] = other.a() * a() + other.b() * c(); result.m_values[0] = other.a() * a() + other.b() * c();
result.m_values[1] = other.a() * b() + other.b() * d(); result.m_values[1] = other.a() * b() + other.b() * d();