유니티, 빈 void Start() 함수도 제거하면 성능에 도움이 되나요?

1 답변

0 투표

결론부터 말하면 void Start() 함수를 제거한다고 해서 체감할 만한 성능 향상은 거의 없다고 보는 것이 맞습니다.

유니티에서 Start(), Update() 같은 생명주기 함수는 스크립트에 해당 메서드가 존재할 경우에만 내부적으로 호출 대상에 등록됩니다. 즉, 빈 Start()가 있으면 유니티는 한 번 해당 함수를 호출하려고 시도하지만, 실제 실행되는 코드가 없기 때문에 연산 비용은 극히 미미합니다.

왜 성능 차이가 거의 없을까?

  • Start()씬 로딩 시 1회만 호출됩니다.
  • 함수 내부가 비어 있다면, 실제 실행 비용은 함수 호출 오버헤드 수준입니다.
  • 일반적인 게임에서 프레임 드롭이나 퍼포먼스 문제를 일으킬 정도의 비용은 아닙니다.

즉,
Start() 하나 때문에 성능이 나빠지는 일은 사실상 없다고 봐도 무방합니다.

그래도 제거하는 게 좋은 경우는?

성능보다는 코드 품질과 관리 측면에서 의미가 있습니다.

  • 사용하지 않는 코드 제거 → 가독성 향상
  • “나중에 쓸지도 몰라서 남겨둔 함수” 정리
  • 협업 시 불필요한 혼동 방지
  • 실제 로직이 들어간 Start()와 구분이 쉬워짐

이런 이유로 린 코드 관점에서는 제거하는 것이 바람직합니다.

성능에 실제로 영향을 주는 부분은?

성능을 신경 쓴다면 다음을 보는 게 훨씬 중요합니다.

  • Update() 함수 ❌ (프레임마다 호출됨)
  • 많은 오브젝트에 붙은 Update() / LateUpdate()
  • 불필요한 Find, GetComponent 반복 호출
  • GC Alloc 발생 코드
  • 코루틴 남용

특히 Update()는 반드시 제거하는 것이 좋습니다.
Start()와 달리 매 프레임 호출되기 때문입니다.

정리

  • ✅ 빈 Start() 제거 → 성능 영향 거의 없음
  • ✅ 코드 정리·가독성 측면에서는 제거 권장
  • ❌ 성능 최적화 목적이라면 다른 부분을 먼저 볼 것
  • ⚠️ 빈 Update()는 제거하는 게 맞음

결론적으로,
“빈 Start()를 지우면 성능이 좋아진다”기보다는
“쓸모없는 코드는 지우는 게 좋은 습관이다”에 가깝습니다.

add
...