Comments 14
Ну да, Go очень явно дизайнился с расчетом на сервера, и многие компромисы были приняты в сторону большего использования памяти. Фреймворки вроде https://gobot.io и https://github.com/kidoman/embd, по идее, на Go не имели шанса появиться. Тот факт, что Go активно бегает на embedded и устройствах с маленьким количеством ресурсов это комплимент Go
Какое го- го- горе, Го туда не помещается…
P.S. Скажу проще. Охренели Го-ре разработчики, забыли про единицу измерения в Килобайт
Flussonic успешно пишется на Erlang, творит чудеса с потоковым видео в реалтайме. Не смотрели в ту сторону?
Ребята работают с Go на MIPS с 32Мб памяти на борту (WiFi точка доступа под свои задачи). Результирующий бинарь 16Мб, потребление памяти — 4Мб. Сборка с вырезанием всего лишнего (символы, дебаг и пр.) и ручное управление GC. Функционал:
- Http server
- DHCP
- DNS cache
- Подсистема руления правилами iptables ipset tc
- Netflow коллектор
- Подсистема руления кишками AP
Ну и логика работы с облаком (своё, часть проекта).
В основном профит в реюзе кода между разными компонентами и частями системы, что позволяет решать задачу меньшими человеческими и финансовыми ресурсами. Ну и зоопарк технологий меньше, что тоже плюс.
Не понимаю почему нельзя было решить это как-то более цивилизованно. Например модифицировать свой код, чтобы он не грузил так много в память сразу же, переиспользовать блок памяти в котором хранятся данные для загрузки, ну или самое простое: вызывать какую-то внешнюю утилиту ( свою или обычный curl ) для загрузки данных в сеть. Процесс отработал, и сразу же вся память вернулась в ОС.
Go на устройствах с маленькой памятью