java стиль
От: maks1180  
Дата: 23.11.22 17:05
Оценка: :)
Переписал я часть своего проект в java стиль, т.е. когда реализация метода класса сразу в её декларации. Может быть есть правильное название этого стиля ?

java стиль мне больше нравиться особенно когда много мелких функций, и нужно часто менять их декларации или добавлять новые.
Если нужно хеадер посмотреть, то можно сделать в IDE Folding->Fold all и вы получите фактически header файл, с возможность раскрыть любую функцию.

1. Размер exe, в байтах
1) 263.680 — компиляция через много cpp файлов + линковка
2) 261.632 — компиляция через 1 cpp файл, который включает другие cpp файлы
далее, половина проекта переписана в java стиль
3) 250.880 — компиляция через 1 cpp файл
4) 253.440 — компиляция через 2 cpp файла + линковка

Использую gcc v10.2 on Windows 10. Оптимизация по размеру exe. Конечно же опции одинаковые, вот основная часть: -Os -ffunction-sections -Wl,--strip-all -Wl,--gc-sections

В map файле п2 есть неиcпользуемая функция, этим я объясняю почему п2 больше чем п3. Почему gcc не выкидывает её я не смог понять.
Разницу в размере между п1 и п3 не могу пока объяснить, думаю потому-что я не писал noexcept и компилятор смог оптимизировать когда сразу все функции увидел.
Разницу между п3 и п4 объясняю так — когда сразу не все функции даёшь, то оптимизация хуже работает.
Размер exe, в п3 зависит от порядка включения h файлов. Почему так ?
Может есть ещё какие-то объяснения изменения в размерах ?


2. Пробемы компиляции
Вылезли некоторые атрефакты компиляции, их я в отдельных ветках опишу.

Возникает проблема когда метод класса A использует класс B и наоборот. Приходится такие методы выностить в cpp файл — неудобно.
Может есть решение данной проблемы ?

Если нет решение, вижу следующее решение: пишу свой парсер/препроцессор и разбиваю 1 файл java стиль на 2 файла cpp+h и потом уже они компилируются.
Это нужно делать в прозрачном для пользователя режиме, а так же в случае ошибки ссылаться на место в оригинальном файле.
Но как показывает опыт gcc хуже оптимизирует cpp+h или я что-то не понимаю, нужно получить ответы на п1.
Может уже есть такие решения ? Велосипед не охото изобретать.
===============================================
(реклама, удалена модератором)
Отредактировано 23.11.2022 17:28 maks1180 . Предыдущая версия . Еще …
Отредактировано 23.11.2022 17:27 maks1180 . Предыдущая версия .
Отредактировано 23.11.2022 17:24 maks1180 . Предыдущая версия .
Отредактировано 23.11.2022 17:24 maks1180 . Предыдущая версия .
Отредактировано 23.11.2022 17:21 maks1180 . Предыдущая версия .
Отредактировано 23.11.2022 17:17 maks1180 . Предыдущая версия .
Отредактировано 23.11.2022 17:16 maks1180 . Предыдущая версия .
Отредактировано 23.11.2022 17:15 maks1180 . Предыдущая версия .
Отредактировано 23.11.2022 17:13 maks1180 . Предыдущая версия .
Отредактировано 23.11.2022 17:12 maks1180 . Предыдущая версия .
Отредактировано 23.11.2022 17:09 maks1180 . Предыдущая версия .
Отредактировано 23.11.2022 17:09 maks1180 . Предыдущая версия .
Отредактировано 23.11.2022 17:08 maks1180 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.