주사위 구현 영상을 보던 중, magnitude와 sqrMagnitude의 차이가 궁금해서 찾아봤다.
magnitude
- Vector의 길이를 반환하는 프로퍼티
- Vector의 길이 = Vector의 각 좌표의 제곱들의 합을 루트 연산한 값
ex) Vector (1, 2, 3)의 magnitude = 루트 (1^2 + 2^2 + 3^2)
sqrMagnitude
- Vector의 길이를 반환하는 프로퍼티
- Vector의 길이 = Vector의 각 좌표의 제곱들의 합
ex) Vector (1, 2, 3)의 sqrMagnitude = (1^2 + 2^2 + 3^2)
문제
성능때문에 sqrMagnitude를 주로 사용한다고 한다.
정확히 어떤 성능이 더 좋아서 sqrMagnitude를 사용하는 걸까?
해결
루트 연산은 비싼 연산이다.
Vector의 길이를 비교해야 한다면, magnitude보다는 루트 연산을 하지 않는 sqrMagnitude를 사용하는 게 좋다.
예시 코드
using UnityEngine;
public class Program : MonoBehaviour
{
private Vector3 v;
private void Awake()
{
v = new Vector3(1, 2, 3);
if(v.magnitude > 5.0f)
Debug.Log("magnitude 연산");
if(v.sqrMagnitude > 25.0f)
Debug.Log("sqrMagnitude 연산");
}
}
'유니티 > 엔진' 카테고리의 다른 글
| [Unity] 특정 로직을 한 번만 실행하는 방법 (0) | 2026.04.06 |
|---|---|
| [Unity] 셰이더 깨지는 현상 (0) | 2026.04.05 |
| [Unity] 몰랐던 기능 정리 (0) | 2026.03.15 |