Блог им. 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 ты мы уже идем к вам.... 




422
8 комментариев
Когда задоголовость соединяется с рукожопостью... 
Зато каждый пост набирает одни и же 40-50 лайков. Ни одного комментария при этом. Ребята заморочились и ставят сами себе лайки с фейковых аккаунтов 
avatar
Его что кто-то реально использует кроме васюринца для саморекламы?? 
avatar
AlexShul, канечно, в тг канале много народу тусовалось, но сейчас он всех загоняет в МАХ, открыто ссылку на MAX пока стесняется давать, поэтому дает ее через сервис сокращения ссылок, чтобы вы понели что это макс, только когда по ней перейдете.
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

Читайте на SMART-LAB:
Фото
DXY у ключевой поддержки: шорт-сквиз или новый этап распродажи?
Индекс доллара DXY плавно дрейфует в область месячного минимума в районе 98,50. Однако ослабление доллара на FX неравномерно: EURUSD стоит около...
Фото
Почему можно и нужно проводить ребалансировку портфеля
Фондовый рынок — это динамичная среда, которая постоянно меняется под воздействием новой информации. Из-за этого определенные инвестиционные идеи...
Фото
Коммерческий директор «Озон Фармацевтика» о доверии к отечественным производителям
🔍 В интервью для Российской ассоциации аптечных сетей коммерческий директор «Озон Фармацевтика» Ольга Ларина поделилась мыслями о...

теги блога Beach Bunny

....все тэги



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