>와 >=의 연산차이?
친구가
>와 >=가 연산과부화를 일으킨다고 해서 한번 허접한 실력으로 파봤다.
맨 처음 사진 두장은 소스다.
개인적으로 베이직이 편해서 했다.
주파수속도였나.. 그게아니라 그냥 간단하게 ms단위의 GetTickCount API를 이용했다. (사실 이거밖에 할줄모른다... query엿나 신기한거있던데..)
간단하게 총 3개의 결과가 나온다.
첫번째는 GetTickCount API의 속도검사 신뢰도측정 (3번째사진)
두번째는 c=a>b 연산 10회평균(4번째사진)
세번째는 c=a>=b연산 10회평균(5번째사진)
1ms정도 차이가 난다.
1천번의 반복에 벌써 1ms면 차이가 있는편일거다.
그런데 내가 이 글을 쓰면서 하나 발견했는데
첫번째 썼던 c 변수를 두번째에서 쓰면 당연히 두번째가
이미 자주사용하는 변수의 포인터로써 register에서 자주들락날락거릴수 잇는 위치로 cpu가 알아서 배치할거라 생각했다.
그래서 d라는 변수를 또 만들었다.
그랬더니 아예 똑같이 나오기까지 했다. (두어번 테스트를 했다.)
그래서 되지도 않는 허접한 실력으로 리버싱을 해봤다.
올리디버거로 뜯어보니
>와 >=의 로직은 같았다고나할까...... (으아닛 이게 결론인게냐...?)
미안하다 오덕말투....... 데헷 ><
ㅈㅅ...
>의 로직의 경우에도 JE와 CMP를 쓰고
>=도 JE와 CMP를 쓴다.
아마 이 글을 본 고수님이라면 제발 저좀 갈쳐주세염 흐접이에여..제발..
JE는 Jump if Equal의 약자로 두 값이 동일한지를 검사한다.
CMP는 기본적인 비교구문이다(라고알고잇다).
>의 경우에는
1. 같은지 검사한다. -같나? 그럼 False
2. 다르다면, 큰지 작은지 비교해본다.
>=의 경우에는
1. 같은지 검사한다. -같나? 그럼 True
2. 다르다면, 큰지 작은지 비교해본다.
인거같다.
둘다 같은 어셈을 쓴다는거.
왜 >의 경우에 바로 큰지작은지 검사를 안하나요? 하겠지만
내 짧은 소견으로는 이러하다.
두 값의 대소를 비교하기보다는
두 값이 같은지를 검사하는게 더 빠를거다. (이것부터 가정..)
그렇다면 최대한 더 속도를 빠르게하기위해서 두 값이 같은지를 검사할거다.
아마 두값이 같았다면 비교했던거보다 더빠른 속도로 False를 반환할수잇을테니까.
>=의 경우에도 다를바가 없다.
저좀가르쳐주세요 ㅠㅠ
'Visual Basic 6' 카테고리의 다른 글
[소스] WebBrowser hwnd 얻기 및 화면 캡처 (0) | 2014.06.24 |
---|---|
SendKeysA - API로 입력하기 (0) | 2014.02.24 |
vb6ko.dll 다운로드 (0) | 2014.02.06 |
png파일 불러오기 picturebox에다가 (0) | 2013.12.08 |
Freeimage - vb6 강력한 이미지 변환 모듈 (0) | 2013.12.07 |