결론부터 말하면 빈 void Start() 함수를 제거한다고 해서 체감할 만한 성능 향상은 거의 없다고 보는 것이 맞습니다.
유니티에서 Start(), Update() 같은 생명주기 함수는 스크립트에 해당 메서드가 존재할 경우에만 내부적으로 호출 대상에 등록됩니다. 즉, 빈 Start()가 있으면 유니티는 한 번 해당 함수를 호출하려고 시도하지만, 실제 실행되는 코드가 없기 때문에 연산 비용은 극히 미미합니다.
왜 성능 차이가 거의 없을까?
Start()는 씬 로딩 시 1회만 호출됩니다.
- 함수 내부가 비어 있다면, 실제 실행 비용은 함수 호출 오버헤드 수준입니다.
- 일반적인 게임에서 프레임 드롭이나 퍼포먼스 문제를 일으킬 정도의 비용은 아닙니다.
즉,
빈 Start() 하나 때문에 성능이 나빠지는 일은 사실상 없다고 봐도 무방합니다.
그래도 제거하는 게 좋은 경우는?
성능보다는 코드 품질과 관리 측면에서 의미가 있습니다.
- 사용하지 않는 코드 제거 → 가독성 향상
- “나중에 쓸지도 몰라서 남겨둔 함수” 정리
- 협업 시 불필요한 혼동 방지
- 실제 로직이 들어간
Start()와 구분이 쉬워짐
이런 이유로 린 코드 관점에서는 제거하는 것이 바람직합니다.
성능에 실제로 영향을 주는 부분은?
성능을 신경 쓴다면 다음을 보는 게 훨씬 중요합니다.
- 빈
Update() 함수 ❌ (프레임마다 호출됨)
- 많은 오브젝트에 붙은
Update() / LateUpdate()
- 불필요한
Find, GetComponent 반복 호출
- GC Alloc 발생 코드
- 코루틴 남용
특히 빈 Update()는 반드시 제거하는 것이 좋습니다.
Start()와 달리 매 프레임 호출되기 때문입니다.
정리
- ✅ 빈
Start() 제거 → 성능 영향 거의 없음
- ✅ 코드 정리·가독성 측면에서는 제거 권장
- ❌ 성능 최적화 목적이라면 다른 부분을 먼저 볼 것
- ⚠️ 빈
Update()는 제거하는 게 맞음
결론적으로,
“빈 Start()를 지우면 성능이 좋아진다”기보다는
“쓸모없는 코드는 지우는 게 좋은 습관이다”에 가깝습니다.