Здравствуйте, гость ( Вход | Регистрация )

> UOpilot и windows10?, медленная работа функции color()
Mooncake
сообщение 28.10.2023, 10:32
Сообщение #1


*

Registred
Сообщений: 3
Регистрация: 28.10.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.641
Возраст: 33



Здравствуйте!

Запускаю следующий скрипт в uopilot, который измеряет время своего выполнения, без привязки к какому-либо окну

Код
--lua
local t = os.clock()
for i = 1, 100 do
    color(640,512)
end
log('---', os.clock()-t)


При запуске uopilot на win10 (с ПК) в режиме совместимости с win7 (без режима результат примерно тот же) вывод программы:
--- 1.968
--- 1.933
--- 1.928

При запуске uopilot на win7 (с ноута) вывод программы:
--- 0.062
--- 0.064
--- 0.059

UOpilot всегда запускается от Администратора при отключенном антивирусе. Производительность ПК с win10 намного выше, чем ноута с win7, т.е. с железом проблемы быть не может.

Подскажите, пожалуйста, что можно сделать!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
cirus
сообщение 23.11.2023, 13:44
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 25986
Пользователь №: 16.971
Возраст: 29



Чем больше фпс, тем быстрее получение цвета.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
deNoor
сообщение 13.12.2023, 18:09
Сообщение #3


**

Neophyte
Сообщений: 10
Регистрация: 24.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.019
Возраст: 28



Цитата(cirus @ 23.11.2023, 13:44) *

Чем больше фпс, тем быстрее получение цвета.


Я, конечно, не знаю, как делает пилот, но в сишарпике Graphics.CopyFromScreen(), который зовёт Gdi32.BitBlt(), который, судя по всему, терпеливо ждёт до ближайшего кадра. Получается, чем быстрее следующий кадр, тем быстрее вернётся, а само получение-отпускание девайс контекста (GetDC + ReleaseDC) и копирование очень быстрые. Ограничивается только ожиданием, чего бы тут покопировать. (IMG:style_emoticons/default/smile.gif)
Процессор не кушает, а именно что тихонько ждёт.

Замеры с высокоточным таймером (Stopwatch) для Graphics.CopyFromScreen + Bitmap.GetPixel:
— при копировании с 60 фпс (поставить в виндовс) десктопа без запущенных игр это как раз 1000/60 мс;
— для десктопа со 165фпс это 1000/165 мс;
— для игры с VSync ON + FPS Limit 158 (в драйвере нвидии aka Nvidia Control Panel), которая выдаёт эти 158 фпс, будет 1000/158 мс,
— для игры, которая крутит около 250 фпс с отключением вертикальной синхронизации и лимитера (в драйвере нвидии), аж через 1-2 мс возвращалась. Получается даже чаще каждого кадра, когда vsync не блочит. Пробы десктопа без запущенной игры так не могут. (IMG:style_emoticons/default/smile.gif)
Чёрных пикселей вместо реальных, на что иногда жалуются для пилота (малевичи), не было. Но игры диабло 3 и овервотч, которые новее линеаге.

Для копирования маленького куска пикселей вместо пробы одного: graphics.CopyFromScreen + bitmap.LockBits + Marshal.Copy(в свой управляемый массив) + bitmap.UnlockBits — замеры времени такие же.
Но для целого экрана 2560x1440 одно только копирование длится долго + ждать ближайший кадр — выходило около 18-24мс вместе (раз в 3-4 кадра для 165 фпс). Причём, отказ от Marshal.Copy в пользу щупания байтиков через указатель, выданный в LockBits(), ничего не изменил. Всё время съедает CopyFromScreen.

Такое вот для виндовс 11 22631.2861, Hardware-accelerated GPU scheduling - ON, Windowed Optimizations - ON.

Хоть это не имеет прямого отношения к пилоту, наверное, он всё равно пользуется теми же виндовс функциями, потому ожидания могут быть сходные.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Mooncake   UOpilot и windows10?   28.10.2023, 10:32
Mooncake   Примечательно то, что, например, findcolor() работ...   28.10.2023, 10:47
DarkMaster   Возможно несколько иное поведение в плане хэндлов....   31.10.2023, 15:23
Mooncake   Спасибо! Указание хэндла в функции color() дей...   23.11.2023, 12:57
Cockney   Это эмпирические наблюдения или есть где почитать ...   23.11.2023, 21:31
cirus   Просто тестил в л2. В чём причина такого поведени...   24.11.2023, 1:53
DarkMaster   Старый метод снятия скринов - 30 фпс. Есть подозр...   28.11.2023, 16:23
Cockney   Старый метод снятия скринов - 30 фпс. Есть подозр...   28.11.2023, 17:30
DarkMaster   Тестил на л2. В л2 100 фпс - я получаю 100 финдов....   28.11.2023, 18:06
yodich   Тестил на л2. В л2 100 фпс - я получаю 100 финдов...   1.12.2023, 0:10
DarkMaster   Ты не представляешь, как я жду. Не могу добраться ...   1.12.2023, 10:08
yodich   Ты не представляешь, как я жду. Не могу добраться...   1.12.2023, 18:24
DarkMaster   deNoor, спасибо за предоставленную информацию. Во ...   13.12.2023, 18:21


Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 16.11.2025, 9:44
Designed by Nickostyle