본문 바로가기
게임 이야기/스타크래프트2

쓸데없는 성능 측정 - 최대공약수, 재귀함수

by LillyLt 2018. 10. 9.

이번엔 최대 공약수를 구하는 함수 입니다.

그리고 이분야에서 공부 한번 해봤으면 들어봤을 유클리드 호재법..

https://ko.wikipedia.org/wiki/%EC%9C%A0%ED%81%B4%EB%A6%AC%EB%93%9C_%ED%98%B8%EC%A0%9C%EB%B2%95


뭐 일단은 써봐야죠


크게 두가지 방식으로 구현할건데

재귀 함수 방법이랑 while문 방식입니다.

c++로 한번 측정 해봐야하긴 하는데 귀찬아서 스타2 트리거로 구현.[음?]




1번은 재귀 방식

2번은 변수 반복 방식

코드 라인수부터 차이 나네요.



그럼 테스트 스크립트 작성



두개가 동시에 실행되면 시간이 서로 영향 미쳐서 순차 실행


값은 잘 나오는거 확인 했기에 디버그 메세지 제외




반복횟수를 100000회로 측정 



lib1B30C79D_gt_Euclidean_set 트리거가 - 재귀 방식

lib1B30C79D_gt_Euclidean_set2 트리거가 - 반복 방식


재귀 방식 369 밀리초

반복 방식 396 밀리초



횟수가 적어서 그런가

아니면 초기화 직후에 해서 그런가


지도 초기화후 시간 지연 5초좀 넣고 

1000000회로 실행




그리고

실행 순서를 바꿔서 한번더 실행




재귀 방식 3778 밀리초

반복 방식 4175 밀리초


음 함수 재귀방식이 빠르네요

변수 대입 코드가 몇번 들어갔다고 저정도 성능차이가 나버리네요.


성능 최적화 할려면 역시 코드 실행 횟수를 줄이는게 답입니다.


팁: 에디터 설정을 창모드로 하시면 스샷처럼 디버그창 이용 가능.

비활성된 트리거라도 디버그창에서 강제 실행 가능


최대공약수.SC2Lib