Блог им. BackLaN

OS Engine - силовое освобождение пямяти и система LOH / SOH

Я думаю что все пользователи OS Engine читали статью про СИЛОВОЕ освобождение памяти в новой OSEngine
smart-lab.ru/company/os_engine/blog/1203290.php 
OS Engine - силовое освобождение пямяти и система LOH / SOH

как они это сделали, это конечно отдельный прикол в стиле.
Дремучим сибирским лесорубам подарили новуюяпонскую бензопилу. Подставили доску:
— Вжик! — сказала японская бензопила.
— Ух ты! — сказали дремучие сибирские лесорубы.Подставили бревно:
— Вжик! — сказала японская бензопила.
— Ух ты! — сказали дремучие сибирские лесорубы.Подставили железный лом:
— Крррр....! — сказала японская бензопила.
— А #ля! — сказали дремучие сибирские лесорубы.

Если вкратце, то большое выделение памяти происходит,
потому что в .NET сменили GC который используется по умолчанию на Server GC.
А раньше в NET.Framework по умолчанию был Workstation GC.
Можно вернуться к использованию Workstation GC, который выделяет память по другому
и быстрее освобождает, с помощью небольших настроек.
Но суровые российские разработчики OS Engine не умеют читать документацию
на непонятном вражеском языке и поэтому всегда по привычке используют ЛОМ для исправления ошибок.

Если вы все еще используете OS Engine ты мы уже идем к вам.... 




447
12 комментариев
Когда задоголовость соединяется с рукожопостью... 
Зато каждый пост набирает одни и же 40-50 лайков. Ни одного комментария при этом. Ребята заморочились и ставят сами себе лайки с фейковых аккаунтов 
avatar
Его что кто-то реально использует кроме васюринца для саморекламы?? 
avatar
AlexShul, канечно, в тг канале много народу тусовалось, но сейчас он всех загоняет в МАХ, открыто ссылку на MAX пока стесняется давать, поэтому дает ее через сервис сокращения ссылок, чтобы вы понели что это макс, только когда по ней перейдете.
avatar
Beach Bunny, понЕли?
avatar
MoexIssDataServer.cs оценка бездушной нейросетки:
Выводы по оценке кода

🔴 Критические проблемы:

  1. Нарушение принципов SOLID - класс выполняет слишком много несвязанных обязанностей

  2. Отсутствие обработки ошибок - много мест с потенциальными исключениями

  3. Жестко закодированные значения - магические числа и строки усложняют поддержку

  4. Синхронные HTTP-запросы - блокируют потоки, низкая производительность

  5. Сложная бизнес-логика - методы трудно понимать и тестировать

🟡 Проблемы среднего уровня:

  1. Слабая типизация - работа со строками вместо перечислений

  2. Дублирование кода - повторяющиеся паттерны HTTP-запросов

  3. Отсутствие модульных тестов - код невозможно адекватно протестировать

  4. Проблемы с читаемостью - длинные методы и сложные условия

🟢 Положительные моменты:

  1. Логическая структура - разделение на регионы

  2. Базовое логирование - есть система уведомлений об ошибках

  3. Инкапсуляция - разделение реализации и интерфейса

Общая оценка: 3/10

Код работает, но обладает серьезными архитектурными проблемами, низкой надежностью и сложностью поддержки. Требуется значительный рефакторинг для промышленного использования

И это только один файл. Представьте сколько там косяков… Привет васюрино!

avatar
AlexShul, там еще в UI кучу мутотени было, изначаль он писал UI с WinForms — кстати если бы продолжал, то у него возможно программа работала бы в Linux через Mono, но они решили перейти на WPF — но своеобразно перешли, там куча старого кода от WinForms с костылями оставалась. 
И заодно под Linux на запускается.
avatar
 И выводы 

❌ Критические недостатки:

  • Опасно ненадежный - упадет при первом же нестандартном ответе API

  • Неподдерживаемый - если MOEX изменит API, придется переписывать пол-класса

  • Медленный - сотни синхронных HTTP-запросов подряд

  • Хрупкий - любое изменение в данных вызовет исключения

💀 Профессиональные риски:

  • Нельзя использовать в продакшене - гарантированно приведет к потерям данных/денег

  • Нельзя тестировать - нет возможности написать нормальные тесты

  • Технический долг - каждая минута работы с этим кодом создает часы будущих проблем

🚩 Для контекста:

В профессиональной среде такой код:

  • Не прошел бы code review

  • Не был бы допущен в прод

  • Требовал бы полного переписывания

Вывод: Код выполняет свою задачу «на троечку» для личного использования, но абсолютно непригоден для коммерческого применения.

avatar
 а вот бездушная нейросеть оценивает коннектор новой кормухи:
Резюме анализа кода TInvestServer🎯 Общая оценка: Требует серьезной доработки

Сильные стороны:

  • Полнофункциональность - покрывает все основные аспекты торгового подключения

  • Стабильность - развитая система обработки ошибок и восстановления соединений

  • Безопасность - корректная работа с потоками и лимитами API

  • Документированность - четкая структура и логическое разделение функционала

Критические проблемы:

  • Архитектурные нарушения - монолитный класс, нарушающий принцип единственной ответственности

  • Сложность поддержки - чрезмерная связанность кода и высокий порог входа для новых разработчиков

  • Риски стабильности - множественные потоки управления и сложные цепочки зависимостей

  • Проблемы масштабирования - жесткая архитектура затрудняет добавление нового функционала

Рекомендации по приоритетам:

  1. Высокий приоритет - рефакторинг архитектуры, разделение ответственностей

  2. Средний приоритет - улучшение управления ресурсами и потоками

  3. Низкий приоритет - оптимизация производительности и уменьшение сложности

Вердикт: Код функционален в текущем состоянии, но представляет значительные риски для долгосрочной поддержки и развития. Требует структурного рефакторинга перед добавлением нового функционала.

avatar
Ну и еще в резюме васюрино добавлю оценку оптимизатора от бездушной нейросети:
Объективная оценка кода

🔴 Критические проблемы

1. Алгоритмические

  • Полный перебор без эвристик — O(∏nᵢ) сложность

  • Нет early stopping, pruning, sampling

  • 5M+ итераций без оптимизации — unacceptable для production

2. Архитектурные

  • God Object (1000+ строк, 10+ ответственностей)

  • Нарушение всех принципов SOLID

  • Смешение логики оптимизации, создания ботов, конфигурации, многопоточности

3. Производительность

  • Thread.Sleep(1)  — active waiting, CPU waste

  • Принудительный GC.Collect()  — memory management anti-pattern

  • Блокирующие циклы вместо async/await

4. Поддерживаемость

  • Дублирование сложной логики перебора

  • Methods > 150 строк с nested conditions

  • Magic numbers, hardcoded limits

🟡 Серьёзные недостатки

5. Error Handling

  • Частичная обработка исключений

  • Продолжение работы после критических ошибок

  • Нет graceful degradation

6. Тестируемость

  • Tight coupling делает unit testing невозможным

  • Зависимости от глобального состояния

  • Side effects everywhere

7. Безопасность

  • Нет валидации входных параметров

  • Потенциальные race conditions

  • Утечки ресурсов (серверы, потоки)

🟢 Единственные плюсы

8. Функциональность

  • Базовый пайплайн in-sample/out-of-sample работает

  • Поддержка разных типов стратегий

  • Прогресс-отчетность

9. Многопоточность

  • Basic parallelization есть

  • Управление количеством потоков

📊 Итоговая оценка

Техническое качество: 2/10

  • Работает, но неприемлемо для production

  • Высокие риски стабильности и масштабирования

Архитектура: 1/10

  • Полное отсутствие архитектурных принципов

  • Монолит с тесными связями

Алгоритмы: 1/10

  • Наивная реализация вместо domain-specific оптимизаций

Профессиональный уровень: Junior- Mid- уровень

  • Отсутствие knowledge of optimization algorithms

  • Незнание современных concurrency patterns

  • Limited understanding of software design

Вердикт

Код требует полного переписывания, а не рефакторинга. Текущая архитектура фундаментально неисправима.

Это типичный пример «working prototype», который ошибочно попал в продакшен без необходимой доработки.

avatar
А по назначению вы OS-Engine пробовали применять? Там с ноября после Trading Boost camp мин 4 робота добавились. Есть результаты форвардного тестирования? Или вы тут только код приложения разбираете? На счёт ссылки на макс не понял. В обоих каналах состою. В чём прикол рассказывать про какие-то хитрые ссылки?
avatar
Xakauga, нет, 
— мне OS-Engine не нравится
— я использую питона
avatar
Beach Bunny, Спасибо. Понятно.
avatar

Читайте на SMART-LAB:
Фото
Стратегия 2026 по рынку акций от Mozgovik Research: трудный год, но, возможно, последний год низких цен
Сегодня у меня первый день официального отпуска. За окном темная звездная ночь, яркая белая луна, +24С и шум волн Андаманского моря. Неудачный...
Обновление кредитных рейтингов в ВДО и розничных облигациях (АО «Нэппи Клаб» понижен до ruC)
🔴АО «Нэппи Клаб» Эксперт РА понизило рейтинг кредитоспособности до уровня ruC, прогноз по рейтингу развивающийся. По рейтингу установлен...
Фото
Кремниевый юг России: история переезда и развития OsEngine. Видео
В этом выпуске рассказываем, почему наша компания уже более пяти лет находится в Краснодарском крае, а не в столице или за рубежом. Обсудим, как и...

теги блога Beach Bunny

....все тэги



UPDONW
Новый дизайн