Totoro 3 563 Опубликовано: 17 сентября, 2019 Всем привет. Мы тут пишем эмулятор OpenComputers, и в процессе его нужно тестировать. Поэтому будет очень здорово, если кто-нибудь напишет утилиту-бенчмарк. Утилита должна выглядеть как программка для OpenOS, на Lua. В идеале её надо загрузить в Hel, чтобы было быстрее устанавливать. Для чего именно она нужна? Делать бенчмарк компьютера в Minecraft смысла особо нет - там и так понятно насколько будет производительной твоя "сборка". Но это имеет смысл делать в эмуляторе - потому что эмулятор может глючить, лагать, багать, и жрать оперативную память. (Например, сегодня мы запустили в Ocelot Online демку, которая очень быстро рендерила текст на экране, и в результате, у @Fingercomp браузер сожрал 5 гигабайт оперативной памяти, засвопился и вырубил на час весь компьютер.) Что именно она должна тестировать? Утечки оперативной памяти, производительность рендера и лаги эмулятора. Для этого можно например запустить интенсивный рендер на экране какого-нибудь цветастого мусора. Или любой другой вариант. Засечь время и потом сверить "внутриигровые" часы с настоящими, чтобы определить, не лагало ли оно. (Параллельно тесту можно будет уже вручную смотреть диспетчер задач - не жрет ли браузер или десктопный эмулятор ресурсы больше положенного.) Правильную работу компонентов. То есть проверить, соединяет ли интернет карта с интернетом, посылает ли сетевые сообщения модем, и так далее. Всю инфу надо потом красиво вывести на экран. Можно в графическом виде, можно в командной строке. Награда? Большое спасибо от всей души. Короче, если кто-то будет искать идею "что бы написать" - бенчмарк для эмулятора это вариант. Он нам пригодится. 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter 545 Опубликовано: 25 апреля, 2020 Попробовал написать что-то такое. Сам файл лежит в онлайн-эмуляторе (ocelot.fomalhaut.me) по пути /home/.mt.lua . Вкратце результат: Ocelot Online гораздо лучше соответствует таймингам Minecraft, чем OCEmu. Но в обоих эмуляторах есть баги. Тесты: тест 1 - генерация 10 тысяч псевдослучайных чисел тесты 2-4 - отрисовка случайного текста на экране тест 5 - испытание гуделки случайными звуками (computer.beep) тест 6 - проверка, все ли компоненты имеют методы по документации тест 7 - проверка файловой системы на чтение-запись тест 8 - проверка Интернета тесты 9,10 - проверка сетевой и соединённой карты соответственно тест 11 - проверка EEPROM на чтение-запись Результаты: Minecraft 1.7.10 (компьютер tier 3) тест 1 - 0,05 с тест 2 - 1,3 с (рендер идёт постоянно) тест 3 - 1,8 с тест 4 - 2,5 с тест 5 - 13,5 с тест 6 - без предупреждений тест 7 - предупреждение, что временная файловая система не найдена тест 8 - без предупреждений тест 9 - 1,15 с; предупреждение, что никто на пинг не ответил тест 10 - не проводился (не хватило места для соединённой карточки) тест 11 - 2,2 с Ocelot Online тест 1 - 0,05 с тест 2 - 1,9 с (рендер кусками) тест 3 - 2,65 с тест 4 - 3,7 с тест 5 - 13,5 с тест 6 - без предупреждений тест 7 - предупреждение, что временная файловая система не найдена; (баг эмулятора) на unmanaged диск ничего не записывается тест 8 - без предупреждений тест 9, 10 - не проводились тест 11 - 2,2 с OCEmu тест 1 - 0,02 с тест 2 - 0,37 с (рендер после coroutine.yield) тест 3 - 0,43 с тест 4 - 0,91 с тест 5 - 4,58 с тест 6 - без предупреждений тест 7 - предупреждение, что временная файловая система не найдена тест 8 - без предупреждений тест 9 - 1 с; (баг OCEmu) модем поймал своё сообщение тест 10 - не проводился тест 11 - 0,001 с Награду попрошу отдать на дальнейшую разработку Ocelot и фиксы багов. 4 2 2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
AtomicScience 76 Опубликовано: 25 апреля, 2020 1 час назад, ProgramCrafter сказал: Ocelot Online гораздо лучше соответствует таймингам Minecraft, чем OCEmu В OCEmu есть специальная настройка, которая включает режим эмуляции задержек запросов к компонентам (fast). Она была включена? 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter 545 Опубликовано: 25 апреля, 2020 2 часа назад, AtomicScience сказал: В OCEmu есть специальная настройка, которая включает режим эмуляции задержек запросов к компонентам (fast). На прошлом тесте было fast=true (быстрый режим). Данные второго теста OCEmu (fast=false): тест 1 - 0,02 с тест 2 - 1,61 с (рендер - как в Minecraft - идёт постоянно) тест 3 - 2,20 с тест 4 - 3,00 с тест 5 - 4,72 с тест 6 - без предупреждений тест 7 - предупреждение, что временная файловая система не найдена тест 8 - без предупреждений тест 9 - 1,15 с; баг с поимкой собственного сообщения остался тест 10 - не проводился тест 11 - 0,09 с Итого в OCEmu в медленном режиме: - операции с GPU медленнее, чем в Minecraft, - генерация случайных чисел быстрее, - пищалка в 3 раза быстрее Minecraft, - (баг) модем ловит собственное сообщение, - запись на EEPROM практически мгновенна. Тайминги Ocelot Online практически совпадают с нужными, за исключением GPU. 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 409 Опубликовано: 27 апреля, 2020 Оцелот хорош тем, что его мозги — это реорганизованный код из OpenComputers, поэтому вся логика работы компонентов сохранена и может быть легко обновлена. GPU также работает с теми же характеристиками, что и в моде. Задержки в отображении — это проблема исключительно онлайн-версии, которую Тотора год никак не может доработать. В незаконченной десктоп-версии проблем с GPU не наблюдалось. @Totoro так что давай доделывай оцелота. Нужен новый рендер и воркспайсы. 3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 27 апреля, 2020 О, нихрена себе. @ProgramCrafter огромное спасибо за всестороннее тестирование. Unmanaged диск надо будет чинить, да. Рендер новый уже есть, должен рисовать плавнее, меньше грузить компьютер и всё такое (спасибо @LeshaInc). @Fingercomp ну придётся таки перебороть лень и выкатывать вторую версию в онлайн. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
hohserg 197 Опубликовано: 20 октября, 2020 @ProgramCrafter можешь залить этот сборник бечмарков куда-нибудь на пастебин или гист? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter 545 Опубликовано: 22 октября, 2020 @hohserg Закинул: https://pastebin.com/raw/qdYmD7Bw Только что перепроверил, вроде все тесты работают. Единственная странность - что Юникод рендерится дольше, чем простой ASCII, хотя вызовов к gpu.set остаётся столько же. Возможно, быстрее исчерпывается бюджет вызовов, но это сомнительно. 1 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
ProgramCrafter 545 Опубликовано: 5 ноября, 2020 В 27.04.2020 в 23:03, Totoro сказал: Рендер новый уже есть Новый рендер действительно похож на Minecraft. Единственное, что мне не нравится - это неограниченное потребление памяти браузером - достаточно запустить такой код, и реальный компьютер станет лагать: while true do for i = 1, 50 do print(string.char(math.random(56, 126))) end os.sleep(0) end Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Totoro Автор темы 3 563 Опубликовано: 12 ноября, 2020 В 05.11.2020 в 16:18, ProgramCrafter сказал: Новый рендер действительно похож на Minecraft. Новый рендер ещё не выкачен на сайт. Там старый =) Новый рендер предполагается по модели Desktop Ocelot. Можно попробовать этот код там. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах