Обновление движка для OsEngine. Переехали на .NET 9
Итак.Пока все жарили шашлыки и праздновали праздники, OsEngine переехал на платформу .Net 9 со своей древнющей .Net Framework. Тотальное ускорениеи утолщение!При этом изначально предполагался переезд на .NET 8, но в какой-то момент мы вошли во вкус. Гулять так гулять! О чём речь?Каждый год мы с друзьями Microsoft выпускает какой-то новый способ создания программ. В этот список входят: .Net Framework (1 — 4.8) / .Net Core / .NET (6 — 10) и т.д.Хрен его знает зачем. Это доподлинно никому не известно (Известно, но всё равно достали), и продолжают это делать вот уже более 20 лет.Я очень тяжёл на подъём в отношении переездов с версии на версию, ибо это всегда частично переписывание терминала, но тут уже жизнь нас заставляет это делать..Net Framework, на котором был написан OsEngine изначально, безнадёжно устарел. Под него перестают выпускать обновления, от чего у нас не работают некоторые вещи для сетевого стека, которые очень нужны нам всем, поэтому нам пришлось.В нагрузку к «надо» шли ещё такие вещи: Ускорение работы повсеместное всего чего можно.Страшный геморрой с коннекторами, которые пришлось местами изрядно переписать. Заменить библиотеку для WebSocket на свою кастомную.Поговорим об этом всём. Скорость работы. На 50% быстрее.Скорость оптимизации выросла где-то на 10%, где-то на 50% в зависимости от роботов. На самых загруженных роботах, вроде скринеров с большим количеством данных и десятках тысяч позиций, самое большое ускорение. Оптимизирована работа по разбору JSON и строк из сети.Это было горячо анонсировано ещё в версии 8, которую мы пропустили, а ведь это именно то, что нам нужно во время боевой торговли. Быстрая конвертация данных из сетевых протоколов в классы. Обещали по этому направлению кратные ускорения.Почитать об этом можно здесь:https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/#jsonСнижение нагрузки чуть ли не на 60%: Изменилась схема очистки памяти. А вот это плохо.Тут грустная история совершенно.Программы на современных версиях .NET ведут себя с памятью, как человеческий организм с жиром –принимают с удовольствием, расставаться не хотят.Я не поверил, что такое возможно, но похоже теперь увидеть настоящий размер программы получится только в специальных профилировщиках.Старая платформа, быстрый сброс памяти:.NET 9. Медленная очистка и не до конца:От чего у нас теперь с Вами периодически будет возникать вот такая ситуация: OsEngine использовано 13 мегабайт памяти на компьютере, при этом .NET 9 зарезервировал себе на вырост 440!!!!Три дня попыток сделать с этим хоть что-то, успехом не увенчались. На ПК с большим объёмом оперативной памяти .NET вообще перестаёт себя контролировать и забирает столько памяти, сколько может.Странные программисты из Калифорнии пишут, что это прекрасно и позволяет-таки ускорять приложения как следует. Короче:По этому направлению я задумки не понял и, несколько раз страшно ругаясь, хотел уже возвращаться на .Net Framework.Теперь OsEngine как все программы для Windows на C#, якобы жрёт память как не в себя, и никому не объяснишь, что это какой-то там CLR себе её выделяет. Написан новый универсальный WebSoket.Пришлось убрать библиотеку WebSocketSharp, т.к. она устарела и роняла приложение. Написали свою:Коннекторы уже модернизировали. Программистам надо установить .NET 9 SDKСсылка на скачивание:https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-9.0.300-windows-x64-installerПосле чего скачиваем проект OsEngine с ГитХаб стандартно и запускаем. Пользователям ничего делать не надо.Слой создания роботов без изменений.Запускается проект точно так же.Старые роботы работают.Ну или типа того. На самом деле у нас с Вами месяц приключений впереди.При обнаружении ошибок, Вам следует обращаться в группу поддержки:https://t.me/osengine_official_support P.S. БЛАГОДАРНОСТИ! Отдельно хотел поблагодарить команду которая этим занималась. Без Вас парни такие процессы вообще не возможны. Спасибо за помощь! Так победим! Профиль на ГитХаб: https://github.com/nikitabuidaПрофиль на СмартЛаб: https://smart-lab.ru/profile/fininja/ Профиль на ГитХаб: https://github.com/VovcheG1Профиль на СмартЛаб: https://smart-lab.ru/profile/Vov4eG/ Профиль на ГитХаб: https://github.com/Knyazev-SergeyПрофиль на СмартЛаб: https://smart-lab.ru/profile/SergeyKnyazev_3b0/ Удачных алгоритмов!Комментарии открыты для друзей!https://smart-lab.ru/company/os_engine/blog/1024149.phpOsEngine: https://github.com/AlexWan/OsEngine

Итак.
Пока все жарили шашлыки и праздновали праздники, OsEngine переехал на платформу .Net 9 со своей древнющей .Net Framework. Тотальное ускорениеи утолщение!
При этом изначально предполагался переезд на .NET 8, но в какой-то момент мы вошли во вкус. Гулять так гулять!
О чём речь?
Каждый год мы с друзьями Microsoft выпускает какой-то новый способ создания программ. В этот список входят: .Net Framework (1 — 4.8) / .Net Core / .NET (6 — 10) и т.д.
Хрен его знает зачем. Это доподлинно никому не известно (Известно, но всё равно достали), и продолжают это делать вот уже более 20 лет.
Я очень тяжёл на подъём в отношении переездов с версии на версию, ибо это всегда частично переписывание терминала, но тут уже жизнь нас заставляет это делать.
.Net Framework, на котором был написан OsEngine изначально, безнадёжно устарел. Под него перестают выпускать обновления, от чего у нас не работают некоторые вещи для сетевого стека, которые очень нужны нам всем, поэтому нам пришлось.
В нагрузку к «надо» шли ещё такие вещи:
- Ускорение работы повсеместное всего чего можно.
- Страшный геморрой с коннекторами, которые пришлось местами изрядно переписать. Заменить библиотеку для WebSocket на свою кастомную.
Поговорим об этом всём.
Скорость работы. На 50% быстрее.
Скорость оптимизации выросла где-то на 10%, где-то на 50% в зависимости от роботов. На самых загруженных роботах, вроде скринеров с большим количеством данных и десятках тысяч позиций, самое большое ускорение.
Оптимизирована работа по разбору JSON и строк из сети.
Это было горячо анонсировано ещё в версии 8, которую мы пропустили, а ведь это именно то, что нам нужно во время боевой торговли. Быстрая конвертация данных из сетевых протоколов в классы. Обещали по этому направлению кратные ускорения.
Почитать об этом можно здесь:
https://devblogs.microsoft.com/dotnet/performance-improvements-in-net-8/#json
Снижение нагрузки чуть ли не на 60%:
Изменилась схема очистки памяти. А вот это плохо.
Тут грустная история совершенно.
Программы на современных версиях .NET ведут себя с памятью, как человеческий организм с жиром –принимают с удовольствием, расставаться не хотят.
Я не поверил, что такое возможно, но похоже теперь увидеть настоящий размер программы получится только в специальных профилировщиках.
Старая платформа, быстрый сброс памяти:
.NET 9. Медленная очистка и не до конца:
От чего у нас теперь с Вами периодически будет возникать вот такая ситуация:
OsEngine использовано 13 мегабайт памяти на компьютере, при этом .NET 9 зарезервировал себе на вырост 440!!!!
Три дня попыток сделать с этим хоть что-то, успехом не увенчались. На ПК с большим объёмом оперативной памяти .NET вообще перестаёт себя контролировать и забирает столько памяти, сколько может.
Странные программисты из Калифорнии пишут, что это прекрасно и позволяет-таки ускорять приложения как следует. Короче:
По этому направлению я задумки не понял и, несколько раз страшно ругаясь, хотел уже возвращаться на .Net Framework.
Теперь OsEngine как все программы для Windows на C#, якобы жрёт память как не в себя, и никому не объяснишь, что это какой-то там CLR себе её выделяет.
Написан новый универсальный WebSoket.
Пришлось убрать библиотеку WebSocketSharp, т.к. она устарела и роняла приложение. Написали свою:
Коннекторы уже модернизировали.
Программистам надо установить .NET 9 SDK
Ссылка на скачивание:
https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/sdk-9.0.300-windows-x64-installer
После чего скачиваем проект OsEngine с ГитХаб стандартно и запускаем.
Пользователям ничего делать не надо.
Слой создания роботов без изменений.
Запускается проект точно так же.
Старые роботы работают.
Ну или типа того. На самом деле у нас с Вами месяц приключений впереди.
При обнаружении ошибок, Вам следует обращаться в группу поддержки:
https://t.me/osengine_official_support
P.S. БЛАГОДАРНОСТИ!
Отдельно хотел поблагодарить команду которая этим занималась. Без Вас парни такие процессы вообще не возможны.
Спасибо за помощь! Так победим!
Профиль на ГитХаб: https://github.com/nikitabuida
Профиль на СмартЛаб: https://smart-lab.ru/profile/fininja/
Профиль на ГитХаб: https://github.com/VovcheG1
Профиль на СмартЛаб: https://smart-lab.ru/profile/Vov4eG/
Профиль на ГитХаб: https://github.com/Knyazev-Sergey
Профиль на СмартЛаб: https://smart-lab.ru/profile/SergeyKnyazev_3b0/
Удачных алгоритмов!
Комментарии открыты для друзей!
https://smart-lab.ru/company/os_engine/blog/1024149.php
OsEngine: https://github.com/AlexWan/OsEngine