Тема для начинающих писателей роботов.
--------------------------
Рано и поздно у Вас возникнет желание, либо необходимость, ускорить работу вашего робота.
Да, это скорее всего, реально
Но существует много ненужных телодвижений там, где что-либо делать не имеет смысла.
-----------------------
Например, отключать сборщик мусора в колбеках , а потом его включать.
-------------------------
Поясняю, почему в этом нет смысла.
======================
Для этого напишем следующий тест:
а это результат его исполнения:
В тесте создаем таблицу и заполняем ее.
Потом удаляем таблицу.
В результате у нас создается объем мусора в 2 Мбайта.
Сборщик мусора собирает его за 0.038 ms(0.000038 сек).
---------------------------
Как уже писал на форуме,
Скрипт на луа из-за Sleep(1) в Main имеет задержу исполнения не менее 16 ms, равную кванту времени Windows.
--------------------------------------
Многие, по рекомендации разработчиков QUIK, ставят Sleep(1000) т.е. задержку в 1000 ms
----------------------------------------
Таким образом, если до очередного срабатывания колбека включится сборщик, то он задержит колбек на 0.04 ms.
и сборщик мусора создаст дополнительную задержку не более, чем в 0.25% от задержки от Sleep(1)
------------------------
Можно перепрограммировать системный таймер и получить задержку не менее 1 ms.
------------------------------
Тогда задержка от сборщика составит не более 4% от задержки Sleep(1), но это всего 0.00004 секунды.
--------------------------------------------------
Полагаете, что с этим надо бороться. Вы серьезно?
========================================================
Для справки:
------------------
За квант времени в 1-2 мс поток получает возможность выполнить многие миллионы инструкций процессора.
------------------
Не забывайте и тот факт, что информация с биржи, поступающая к Вам через интернет, приходит с задержкой десять и более ms.
--------------------------
Рано и поздно у Вас возникнет желание, либо необходимость, ускорить работу вашего робота.
Да, это скорее всего, реально
Но существует много ненужных телодвижений там, где что-либо делать не имеет смысла.
-----------------------
Например, отключать сборщик мусора в колбеках , а потом его включать.
-------------------------
Поясняю, почему в этом нет смысла.
======================
Для этого напишем следующий тест:
| Код |
|---|
local t1=nkQt.count(); local x1=collectgarbage("count");
print("занято память КБ= "..x1//1)
local e={}; for j=1,100000 do e[j]=j end --создаем таблицу
local t1=nkQt.count(); local x=collectgarbage("count")-x1;
e=nil; --удаляем таблицу в мусор
print("объем мусора КБ="..x//1)
local t1=nkQt.count(); local x=collectgarbage("collect")
print("сборка мусора(ms)="..(0.1*(nkQt.count()-t1))/1000)
local x=collectgarbage("count") print("занято память КБ= "..x//1) |
| Код |
|---|
>D:/lua53/lua53.exe -e "io.stdout:setvbuf 'no'" "QUIKman.lua" занято память КБ= 220.0 объем мусора КБ=2048.0 сборка мусора(ms)=0.0379 занято память КБ= 156.0 >Exit code: 0 |
Потом удаляем таблицу.
В результате у нас создается объем мусора в 2 Мбайта.
Сборщик мусора собирает его за 0.038 ms(0.000038 сек).
---------------------------
Как уже писал на форуме,
Скрипт на луа из-за Sleep(1) в Main имеет задержу исполнения не менее 16 ms, равную кванту времени Windows.
--------------------------------------
Многие, по рекомендации разработчиков QUIK, ставят Sleep(1000) т.е. задержку в 1000 ms
----------------------------------------
Таким образом, если до очередного срабатывания колбека включится сборщик, то он задержит колбек на 0.04 ms.
и сборщик мусора создаст дополнительную задержку не более, чем в 0.25% от задержки от Sleep(1)
------------------------
Можно перепрограммировать системный таймер и получить задержку не менее 1 ms.
------------------------------
Тогда задержка от сборщика составит не более 4% от задержки Sleep(1), но это всего 0.00004 секунды.
--------------------------------------------------
Полагаете, что с этим надо бороться. Вы серьезно?
========================================================
Для справки:
------------------
За квант времени в 1-2 мс поток получает возможность выполнить многие миллионы инструкций процессора.
------------------
Не забывайте и тот факт, что информация с биржи, поступающая к Вам через интернет, приходит с задержкой десять и более ms.