유니티(Unity)에서 코루틴과 Update의 성능 비교

유니티는 코루틴을 지원하는데, 어떤 사람들은 Update 메소드보다 코루틴이 빠르다며 코루틴 사용을 권장합니다. 그에 대한 의문이 생겨서 시험해 보았더니, 결과는 반대로 나왔습니다. 즉 Update가 코루틴보다 2배 이상 빠른 것으로 나타났습니다. 따라서, 만약 매 프레임마다 해야 하는 일이라면 Update를 사용하는 게 낫고, 그렇지 않다면 코루틴을 사용하는 게 낫습니다.

참고로, 시험에 사용한 코루틴은 아래처럼 빈 Update 메소드와 똑같은 일을 합니다.

IEnumerator UpdateByUsingCoroutine()
{
	for (;;)
		yield return null;
}
Advertisements

2 thoughts on “유니티(Unity)에서 코루틴과 Update의 성능 비교

  1. 유니티의 입장입니다

    ——————————————-
    코루틴은 왜 좋은가요?

    첫 번째로 좋은 점은 성능입니다.

    예를 들어 코루틴에서 yield return new WaitForSeconds(10)이라는 명령을 수행하면 코루틴은 유니티 엔진에게 WaitForSeconds(10)이라는 데이터를 보내고 쉬기 시작합니다. 유니티 엔진은 이를 받고 기록해두었다가 묵묵하게 자기 할 일을 진행 하면서 10초가 지나면 쉬고 있는 코루틴을 깨웁니다.

    코루틴이 없이 일반적으로 이를 구현 한다면 Update 구문에서 Time.deltaTime을 사용하여 매 프레임마다 시간을 더해서 10초가 지났는지 감지해야 하는데, 프레임의 평균 소요 시간이 0.01초라고 한다면, 아이러니하게 10초 동안 대기하기 위해 스크립트는 Update 함수를 1000번 호출해야 합니다. 코루틴을 사용하면 10초 동안 스크립트가 쉬는데 말이지요~

    이러한 점 때문에 특히 모바일 기기에서 코루틴의 활용은 성능 향상에 큰 영향을 미칩니다.

    ——————————————-
    함수콜 횟수로 속도를 따진다면 업데이트가 당연히 많이 호출되는 것드로 보입니다 매프레임호출이 될테니까요, 읽어보니 유니티에서 말하는 코루틴의 효율성은 작성자님과 다른의미인듯하네요.. 그냥 지나가다가 ㅎㅎ

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중