最近、構造体と、いくつかのオーバーロードされた演算子の最適化について質問しました。
今、私はそれらの改善を心に留めました(またはそれらのいくつか/ほとんど)、そして私は次の関数(可能であればCに準拠することを望むので非メンバー関数)で戻ります。
inline Vector2& operator+=(Vector2 &a, const Vector2 &b)
{
a.x += b.x;
a.y += b.y;
return a;
}
inline Vector2 operator+(Vector2 a, const Vector2 &b)
{
a += b;
return a;
}
inline Vector2& operator*=(Vector2 &a, const float &n)
{
a.x *= n;
a.y *= n;
return a;
}
inline Vector2 operator*(Vector2 a, const float &n)
{
a *= n;
return a;
}
inline float operator*(const Vector2 &a, const Vector2 &b)
{
return (a.x * b.x) + (a.y * b.y);
}
inline Vector2 rotate(const Vector2 &a, const float &angle)
{
Vector2 out = a;
out *= cos(angle);
out.x -= sin(angle) * a.y;
out.y += sin(angle) * a.x;
return out;
}
(ここにリストされている他の演算子と同等であるため、減算と別の乗算演算子を省略したことに注意してください)。
現在、他の潜在的な改善に気付くことはできません。私は何かを見逃したことがありますか?それは(潜在的に)これらの機能を現在の状態で非効率的にしますか?