Отключать сборщик мусора при работе с колбеками. Вы прикалываетесь?

Страницы: 1
RSS
Отключать сборщик мусора при работе с колбеками. Вы прикалываетесь?
 
Тема для начинающих писателей роботов.
--------------------------
Рано и поздно у Вас возникнет желание, либо необходимость, ускорить работу вашего робота.
Да, это скорее всего, реально
Но существует много ненужных телодвижений там, где что-либо делать не имеет смысла.
-----------------------
Например, отключать сборщик мусора в колбеках , а потом его включать.
-------------------------
Поясняю, почему в этом нет смысла.
======================
Для этого напишем следующий тест:
Код
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.
Страницы: 1
Читают тему
Наверх