Информация об изменениях

Сообщение java стиль от 23.11.2022 17:05

Изменено 23.11.2022 17:16 maks1180

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

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, конечно же опции одинаковые, вот основная часть: -Os -ffunction-sections -Wl,--strip-all -Wl,--gc-sections

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


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

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

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

Если нет решение, вижу следующее решение: пишу свой парсер/препроцессор и разбиваю 1 файл java стиль на 2 файла cpp+h и потом уже они компилируются.
Это нужно делать в прозрачном для пользователя режиме, а так же в случае ошибки ссылаться на место в оригинальном файле.
Может уже есть такие решения ? Велосипед не охото изобретать.
java стиль
Переписал я часть своего проект в 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, конечно же опции одинаковые, вот основная часть: -Os -ffunction-sections -Wl,--strip-all -Wl,--gc-sections

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


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

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

Если нет решение, вижу следующее решение: пишу свой парсер/препроцессор и разбиваю 1 файл java стиль на 2 файла cpp+h и потом уже они компилируются.
Это нужно делать в прозрачном для пользователя режиме, а так же в случае ошибки ссылаться на место в оригинальном файле.
Может уже есть такие решения ? Велосипед не охото изобретать.