티스토리 뷰

반응형





안녕하세요. Base Of Coding입니다.


이번에 배워 볼 내용은, 코루틴을 이용해서, 지정한 시간만큼 업데이트를 하는 코루틴을 만들어보겠습니다.


지금까지 작생했던 글입니다.



시작하겠습니다!


간단한 내용입니다.


Update함수는 매 프레임마다, 해당 함수에 있는 코드를 체크하기 때문에, 오버헤드가 걸릴 가능성이 있습니다.


굳이, 매 프레임마다 체크해서 실행 할 필요가 없다면, 코루틴으로 시간을 지정해서, 체크를 하는 것이 오히려 좋습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
private void Awake()
{
    StartCoroutine(TimeUpdate());
}
 
private IEnumerator TimeUpdate()
{
   while(true)
   {
      Debug.Log("안녕하세요.");
      yield return new WaitForSeconds(0.1f);
   }
}


이렇게 사용하시면, 0.1초마다 안녕하세요라는 로그를 콘솔창에 출력하는 코루틴입니다.


Update에서, 안녕하세요를 출력시킨다면, 초마다 몇 번이 출력될 지 모르지만, 저렇게 코루틴을 실행한다면?! 0.1초마다 딱 한 번만 출력됩니다!


감이 잘 안오신다구요?


그럼 수치로 한 번 판단해보죠.^^


우리는 로그를 호출하는 데, 그냥 1초에 한 번만 출력하면 된다고 생각하고, 업데이트는, 1초마다 고정으로 3번씩 호출된다는 가정하라고 생각해봅시다.


로그를 호출되는 데, 소모되는 메모리는, 1MB라고 가정하에 생각해볼게요.



1초마다 로그 호출하는 코루틴을 10초정도 실행했다면?!

( 실행횟수 : 10번 ( 1초마다 돌아가는 코루틴에서 로그 호출 * 10초 ) * 1MB = 10MB 소모 )


업데이트로 로그 호출하는 데 10초정도 실행했다면?!

( 실행횟수 : 30번 ( 업데이트에서 로그 호출 3번 * 10초 ) * 1MB = 30MB 소모 )


자 10초동안 20MB의 차이가 납니다. 물론! 로그 하나 호출로 저렇게 절대 차이가 나진 않습니다!ㅎㅎㅎㅎㅎ


10초가 이 정도 차이가 난다면, 100초라면, 약 2000MB가 차이가 나네요??ㅠㅠ 2000MB면, 48MB만 더 소모했다면? 2GB입니다.. 하하핫ㅎㅎ


그냥 쉽게 생각하시라고 가정해봤습니다.


그러니, 굳이 업데이트에서 체크할 필요가 없다면, 코루틴으로 만들어서 체크를 해보시는 것은 어떨까요?ㅎㅎㅎ


지금까지, 코루틴을 이용하여, 지정한 시간만큼 업데이트를 하는 코루틴을 만들어봤습니다.



감사합니다.^^


지금까지 Base Of Coding 이였습니다.



반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함