So how about this new std::hypot?
float dx = x1 - x2; float dy = y1 - y2; return std::hypot(dx, dy);
Time: 12139783 ticks
How about the old one std::sqrt?
float dx = x1 - x2; float dy = y1 - y2; return std::sqrt(dx*dx + dy*dy);
Time: 7026125 ticks (1.7 times faster)
Oh, the std::hypot performs an overflow check, so if you don't care about that just use std::sqrt
And of course the very old
float dx = x1 - x2; float dy = y1 - y2; return dx*dx + dy*dy;
Time: 5667812 ticks (2.1 and 1.2 times faster)
Wait, can I just do
return (x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2);
and let the optimizer fix it. Lets check
Time: 5592648 ticks (seems the same)