프날 오토핫키 강좌
누르면 강좌 리스트가 나와요
프날 오토핫키 강좌

⚠ 이 강좌는 오토핫키 v1을 다룹니다

지금 보시는 강좌는 구버전 오토핫키(v1.1)를 다루고 있습니다. 따라서 본 강좌의 내용은 현재 최신 오토핫키 버전 (v2.0)과 호환되지 않습니다. 구버전의 정보가 필요한 것이 아니라면, 가능한 한 새로운 사이트에 작성한 v2 강좌(https://ahkv2.pnal.dev)를 봐주시길 바랍니다.

[프날 오토핫키] 오토핫키 코드 속도 향상 명령어 모음

오토핫키는 타 언어보다 느린게 사실입니다.

 

그 이유는 몇 가지가 있지만, ①첫 번째는 오토핫키가 스크립트 언어이기 때문입니다. 속도 면에서 스크립트 언어가 컴파일 언어를 이길 수는 없습니다.

 

두 번째는 오토핫키가 안정성 향상을 위해 속도 제한 장치를 걸어두었기 때문입니다. (그 안정성이 오토핫키를 위한 것이든, 사용자의 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

 

나머지 요소들은 큰 속도 향상을 기대하기 힘든 요소들이기에 배제했습니다.

"속도 향상"보단 "성능 향상"에 가까운 개념들이기 때문에, 큰 속도 향상을 기대하기는 힘듭니다. (미미하게 빨라지긴 합니다.)

이런 요소들은 추후 별도의 글로 작성하도록 하겠습니다.