📣 더 깊은 내용이 담긴 '프날 오토핫키 강좌 v2'의 서적판이 공개되었습니다.
가장 최신의 오토핫키를 담은 '프날 오토핫키 강좌 v2'를 책으로 만나보세요!
v2 페이지에 공개된 분량보다 더욱 깊은 내용을 처음이라도 괜찮아, 오토핫키 프로그래밍을 통해 배울 수 있습니다.
전국 온/오프라인 서점에서 만나요!
책 더 알아보기 및 구매하기
[프날 오토핫키] 오토핫키 코드 속도 향상 명령어 모음
오토핫키는 타 언어보다 느린게 사실입니다.
그 이유는 몇 가지가 있지만, ①첫 번째는 오토핫키가 스크립트 언어이기 때문입니다. 속도 면에서 스크립트 언어가 컴파일 언어를 이길 수는 없습니다.
②두 번째는 오토핫키가 안정성 향상을 위해 속도 제한 장치를 걸어두었기 때문입니다. (그 안정성이 오토핫키를 위한 것이든, 사용자의 PC를 위해서이든 말이지요.)
③세 번째 이유는 여러분의 코드에 문제가 있기 때문입니다. 알고리즘의 문제일 가능성이 제일 높고요, 쓰신 명령어가 부적절 할 수도 있습니다.
이번 글에선 두 번째 문제를 해결해보겠습니다.
오토핫키 코드에 속도 제한이 있다고요?
오토핫키에는 [코드 지연 시간]이라는 개념이 있습니다. "XX밀리초만큼 진행할 때마다 10밀리초만큼 쉬어라"와 같은 식입니다. 10밀리초는 고정이며, 우리는 "XX밀리초" 부분에 원하는 숫자를 넣으시면 됩니다. (밀리초 = ms로 표기하겠습니다.)
기본 값은 10ms마다 10ms를 쉬는 것입니다. 깔끔하지요.
한번 이 간격을 조정해봅시다. 아래 명령어를 통해서요.
SetBatchLines, ( )ms
괄호 안엔 [코드 지연 시간]이 들어갑니다. 값이 커질수록 더욱 넓은 간격마다 쉬게 되는 것이고, 값이 줄어들수록 더욱 자주 쉬게 되겠네요. (즉, 값이 클 수록 빠릅니다.)
또한 ms단위를 빼게 되면 "줄 수"를 의미하게 됩니다. 몇 줄에 10ms씩 쉬게 될 지 정해주는 방식이죠.
이 "줄 수"에 -1을 넣게 되면 기본으로 달린 10ms의 지연 시간을 없애줍니다. 풀성능, 풀속도이라는 뜻입니다.
SetBatchLines, 500ms ;500ms마다 10ms씩 쉼
SetBatchLines, 10 ; 10줄마다 10ms씩 쉼
SetBatchLines, -1 ;쉬지 않음
이 명령어는 CPU 성능의 영향을 주고받기 때문에 오토핫키 프로그램의 안정성에도 영향을 미칩니다.
주의해서 써주시면 될 것 같습니다.
제어 관련 명령에도 지연 시간 개념이 있습니다.
키보드/마우스를 제어하는 명령어, 그리고 프날 오토핫키 강좌에선 배우지 않았지만 창/컨트롤을 제어하는 명령어에도 지연 시간 개념이 있습니다. 이 역시 아래 두 명령어로 지연 시간을 가능한 한 짧게 설정할수록 속도 또한 빨라지겠지요.
- SetKeyDelay: 키보드 관련 명령어에 적용되는 실행 시간입니다. (기본 10ms)
- SetMouseDelay: 마우스 관련 명령어에 적용되는 실행 시간입니다. (기본 10ms)
- SetWinDelay: 창 관련 명령어에 적용되는 실행 시간입니다. (기본 100ms)
- SetControlDelay: 컨트롤 관련 명령어에 적용되는 실행 시간입니다. (기본 20ms)
명령어 뒤에 설정할 지연 시간을 적으시면 됩니다. 단위는 생략합니다.
0ms로 설정하면 가능한 한 적은 지연 시간을 의미하며, -1은 아예 딜레이를 없애버립니다. (안정성을 위해, 둘 중 하나를 고르라면 0을 추천드립니다.)
SetKeyDelay, 0
SetMouseDelay, 20
SetWinDelay, 50
SetControlDelay, -1
나머지 요소들은 큰 속도 향상을 기대하기 힘든 요소들이기에 배제했습니다.
"속도 향상"보단 "성능 향상"에 가까운 개념들이기 때문에, 큰 속도 향상을 기대하기는 힘듭니다. (미미하게 빨라지긴 합니다.)
이런 요소들은 추후 별도의 글로 작성하도록 하겠습니다.
⚠ 이 강좌는 오토핫키 v1을 다룹니다
지금 보시는 강좌는 구버전 오토핫키(v1.1)를 다루고 있습니다. 따라서 본 강좌의 내용은 현재 최신 오토핫키 버전 (v2.0)과 호환되지 않습니다. 구버전의 정보가 필요한 것이 아니라면, 가능한 한 새로운 사이트에 작성한 v2 강좌(https://ahkv2.pnal.dev)를 봐주시길 바랍니다.