1

Тема: AHK : Оптимизация и ускорение работы скрипта

Приветствую. У меня есть скрипт, который выполняет нажатия клавиш через функции. Вот кусок скрипта:

$Numpad1::
Dash()
return

Dash()
{
	Global Side
		If (Side = 0){
			WriteMemory(32768, 0x6A34ED4C)
			WriteMemory(0, 0x6A34ED4C)
			WriteMemory(32768, 0x6A34ED4C)
			return WriteMemory(0, 0x6A34ED4C)
		}else{
			WriteMemory(32768, 0x6A34ED4A)
			WriteMemory(0, 0x6A34ED4A)
			WriteMemory(32768, 0x6A34ED4A)
			return WriteMemory(0, 0x6A34ED4A)
	}
}

Уже были выполнены некоторые действия по оптимизации скрипта:

#NoEnv
#MaxHotkeysPerInterval 99000000
#HotkeyInterval 99000000
#KeyHistory 0
ListLines Off
Process, Priority, , R
SetBatchLines, -1
SetWinDelay, -1
SetControlDelay, -1

Но как показывает быстродействие скрипта - этого мало.
Даже если вызвать нажатие клавишей подряд - они будут нажиматься с задержкой в ~20ms.
Хочу узнать, как можно ускорить работу скрипта, так-как при его выполнении мне нужна максимальная скорость.
Хоть я и вообще почти не разбираюсь в AHK, есть подозрения что это из-за функций, которые постоянно вызываются.
Но проблема в том, что они нужны для удобства, потому-что писать сразу "WriteMemory(Value, Address)" для большого кода - проблемно. Одна ошибка в нажатии где-то в середине - ищи нужную строку с клавишей, среди 80 других.
Заранее спасибо!
P.s - Использую запись в память для нажатий клавиш, что-бы обойти защиту игры, которая не даёт нажимать быстрее ~30-35ms.

2

Re: AHK : Оптимизация и ускорение работы скрипта

SetKeyDelay вроде ещё можно.

3

Re: AHK : Оптимизация и ускорение работы скрипта

ypppu
Вряд-ли поможет, всё таки там не нажатия клавиш конкретно как в Send и т.д, а запись в память процесса напрямую, мол "Клавиша нажата".

4

Re: AHK : Оптимизация и ускорение работы скрипта

Dozilius, выложенный вами код исполняется мгновенно, и вы можете проверить самостоятельно если подумаете. Время занимает код, который вы не выложили. Конкретный участок находится тривиально: записывается время до и время после, для точности можно усреднить результат за сотню итераций.

5

Re: AHK : Оптимизация и ускорение работы скрипта

stealzy
Для сценариев Autohotkey (.ahk) значение по умулчанию SetBatchLines, 20ms (за исключением версий до v1.0.16, которые использовали значение 10 строк).
Значение в миллисекундах рекомендуется для скриптов, в которых имеет значение высокая скорость выполнения.
Например, на большенстве систем значение 10ms предотвращает нагрузку на процессор выше 50%, что позволяет выполнять скрипт быстро, сохраняя быстродействие других программ (например игр, программ видео захвата и т.д.).