0 투표
님
유니티, 빈 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()를 지우면 성능이 좋아진다”기보다는
“쓸모없는 코드는 지우는 게 좋은 습관이다”에 가깝습니다.

...