언어/기타

이벤트 처리에서의 속도

by Yggdrasil posted Jul 27, 2006
?

Shortcut

PrevPrev Article

NextNext Article

ESCClose

Larger Font Smaller Font Up Down Go comment Print
이벤트의 반복 방법에는 대략 세가지 정도가 있습니다. 자동적으로 시작, 정기적 병렬 처리, 되풀이 처리.


그렇다면 어느 것이 더 빠를지 간단한 실험을 해보았습니다.

각각의 이벤트는 각각의 변수에 1을 가산하도록 되어있습니다. 그리고 3초씩 처리한 후에 중지됩니다.



실험 결과

자동적으로 시작 : 180
정기적 병렬 처리 : 181
되풀이 처리 : 360252



여기서 저희는 자동적으로 시작과 정기적으로 병렬 처리에는 근소한 차이로 정기적 병렬 처리가 빠르다고 할 수 있겠습니다. 그리고 되풀이 처리는 월등히, 약 2000배 빠르다고 할 수 있습니다. 그런데! 여기에 또다른 변수가 있으니. 그건 바로 대기 '0'초 입니다.

예전에 흔히들 렉을 없애기 위해 대기 0초를 넣으라고 하는 사람들이 있었습니다(지금은 모르겠습니다). 대기 0초. 말 그대로 '0초를 기다리라'니까 결국 아무것도 없는 것과 같은 것 아닌가? 하지만 명령을 읽는 시간이 걸리기 때문에 대기 0초도 상당히 많이 변화를 줍니다. 그렇다면 변수를 1 가산한 후 0초를 기다리게 하면 어떤 결과가 나올까요? 실험해보았습니다.



실험결과
자동적으로 시작 : 179
정기적 병렬 처리 : 91
되풀이 처리 : 216



여기서 새로운 결과가 나오게 됩니다. 자동적으로 시작은 거의 대기 0초의 효과를 받지 않습니다. 반면에, 정기적 병렬 처리는 약 2배정도 속도가 느려졌습니다. 또한, 비록 역시 제일 빠르기는 하나, 되풀이 처리는 현저히 느려졌습니다. 약 1600배 정도 떨어져서 이제 자동적으로 시작의 2배에도 못미치지요. 마지막으로 한가지를 실험해보겠습니다. 대기 0초를 10번 넣어봤습니다.



실험결과
자동적으로 시작 : 18
정기적 병렬 처리 : 17
되풀이 처리 : 36



역시 비슷한 결과가 나왔습니다. 뭐, 되풀이 처리는 이벤트 개수에 상당히 많이 영향을 받는 것으로 보입니다만, 실상은 대기 0초에서만 상당히 느려지는 것 같았습니다.



결론 : 이벤트 처리의 속도

되풀이 처리 > 정기적 병렬 처리 ≒ 자동적으로 시작
즉 반복 이벤트를 짤 때는 되풀이 처리를 꼭 쓰자



그리고, 실험을 할 때마다 수치는 약간씩 변화합니다. 또한 어쩌면 컴퓨터 성능에 따라 수치가 달라질지도 모르는 일입니다(매우 불확실).

Articles

1 2 3 4 5 6 7 8 9 10