Size: a a a

2020 October 20

D

Danya in pro.cxx
Побитый Кирпич
оптимизации лучше применять для всей программы одинаково. Иначе если собрать inline или шаблонную функцию с разными флагами, то можно получить UB
+
источник

AG

Anton Glukhov in pro.cxx
согласен, но этот кусок кода должен “подключаться” к основной программе через git submodules. ох да, я знаю… много всего наверчено
источник

AG

Anton Glukhov in pro.cxx
поэтому и было идеей сделать оптимизаю О3 на функции прям
источник

D

Danya in pro.cxx
Anton Glukhov
можно поподробнее?
Объявление:
#define RUN_ONCE_IMPL(pattern) \
extern "C" { \
 inline void run_once_##pattern() { \
    run_once<pattern>(); \
 } \
}  
#define RUN_ONCE(pattern) run_once_##pattern()


Использование:
// global namespace
RUN_ONCE_IMPL(pattern)

{
 RUN_ONCE(pattern);
}
источник

D

Danya in pro.cxx
Пока писал, понял, что скорее всего это не будет работать
источник

AG

Anton Glukhov in pro.cxx
Danya
Пока писал, понял, что скорее всего это не будет работать
😂
источник

D

Danya in pro.cxx
Но идею решил-таки донести, может что выйдет из этого)
источник

W

Wild_Wind in pro.cxx
Не забудь добавить в флаги сборки:
-fdata-sections -ffunction-sections -Wl,--gc-sections
-flto
по желанию.
источник

D

Danya in pro.cxx
Wild_Wind
Не забудь добавить в флаги сборки:
-fdata-sections -ffunction-sections -Wl,--gc-sections
-flto
по желанию.
Мне кажется LTO обязательно, если хочешь уменьшить раздутие бинарника)
источник

AG

Anton Glukhov in pro.cxx
да, спасибо! Я думаю, возможно я просто уже не в том напралении копаю. у меня по большому счету есть engine, который умеет “запускать” паттерны и вот эти самые функции run_* это функции члены этого класса. Но мне надо сделать еще wrapper над ним, чтобы можно было бы из С запускать. Объекты паттерны это классы которые могут быть определены как в самом фреймворке так и добавляться пользователем. Код, который будет это использовать может быть как на С так и на С++
источник

AG

Anton Glukhov in pro.cxx
Danya
Мне кажется LTO обязательно, если хочешь уменьшить раздутие бинарника)
Прям как раз такой список флагов и стоит. даже lto работает ))
источник

W

Wild_Wind in pro.cxx
Danya
Мне кажется LTO обязательно, если хочешь уменьшить раздутие бинарника)
Оно либы чутка раздувает, т.к. емнип, сборка с lto инструментирует библиотеки. Вроде.
Но для бинарей - обязательно, да.
источник

W

Wild_Wind in pro.cxx
Anton Glukhov
Прям как раз такой список флагов и стоит. даже lto работает ))
:)
источник

D

Danya in pro.cxx
Anton Glukhov
да, спасибо! Я думаю, возможно я просто уже не в том напралении копаю. у меня по большому счету есть engine, который умеет “запускать” паттерны и вот эти самые функции run_* это функции члены этого класса. Но мне надо сделать еще wrapper над ним, чтобы можно было бы из С запускать. Объекты паттерны это классы которые могут быть определены как в самом фреймворке так и добавляться пользователем. Код, который будет это использовать может быть как на С так и на С++
Паттернов конечное число?
источник

AG

Anton Glukhov in pro.cxx
Да, ну может 20-30. Это паттерны индикации. типа LED ленты
источник

AG

Anton Glukhov in pro.cxx
Просто, паттерны идут в коде фреймворка, но еще надо дать возможность пользователю написать свой. В случае с С++ все понятно. Но вот в случае тех кто сидит на С начинается головная боль
источник

k

kyco4ekk in pro.cxx
добрый вечер
источник

А

Антон in pro.cxx
всем привет, провтыкал нажать кнопку антиспам бота в чате для новичков, получил бан) есть админы?)
источник

А

Антон in pro.cxx
спасибо:)
источник

K

Kirill in pro.cxx
Всем привет!
https://en.cppreference.com/w/cpp/container/unordered_map/erase_if

Почему в самом начале, где написана возможная реализация этого метода, c.end() сохраняется в last? Разве при erase не происходит инвалидация итераторов?
источник