Previous Entry Share Next Entry
Захотелось объектов... С++
and_cesbo
Для упрощения организации связей между модулями захотелось в астре сделать какую-то объектную модель, начал искать различные варианты, прочитал 21st Century C, прочитал несколько pdf-ок про способы реализации ООП в Си, но все эти велосипеды я уже изобрёл сам.

Решил попробовать С++, никогда не любил его. Использовал только вместе с Qt, особо не вдавался в его глубины. Всегда считал его непригодным для embedded-девайсов из-за различных его плюшек увеличивающих размер бинарника и уменьшающих производительность. Начал с изучения способов отрезания всего лишнего. Результат получился замечательный - компактный бинарник, без stl, rtti и без исключений (try-catch).

Сделал простой тест udp_input -> цепочка из 2000 модулей пропускающих трафик -> udp_output:
Размер бинарника не изменился (для меня самое главное в 500Кб уложиться).
Оригинальная астра: 58% CPU + 17Mb памяти.
Тестовая астра на С++: 30% CPU + 800Kb памяти...
(PS: в реальных условиях, изменения не будут заметны, так-как логика модулей не изменится)

Объяснение простое мой код связывающий модули слишком запутанный, С++ связал объекты наиболее оптимальным способом. В добавок код стал более понятным.
Астра 4 будет на С++ :-)

  • 1
Ты встал на очень скользкий и сомнительный путь.

Погляди, кстати, на Go.


Согласен, но на этом пути есть и плюсы.

Недавно глядел Go, D. У них проблемы с embedded - нет поддержки многих (всех кроме x86) архитектур.
Только если использовать в связке с gcc (gccgo (для Go), gdc (для D)) - в эту сторону я только начал копать (может ты в курсе...?)
Буду глядеть :-) Но есть вероятность, что они не подойдут (ограничение на размер и зоопарк разных платформ)

  • 1
?

Log in

No account? Create an account