Size: a a a

2020 August 26

RM

Roy Mustang in C++ Together 2.0
🦊fox.cpp
std::bind в теории оверхеда не должен иметь, ибо всё заинлайнится и т.д.
Есть вариант оставить виртуальный метод, но добавить какой нибудь bool в поле абстрактного класса, а в бесконечном цикле проверять, if(bNeedUpdate) { // call callback }
источник

W

Wild_Wind in C++ Together 2.0
Wild_Wind
Если стд фанкшон стейт-лесс, то оверхед на него милипиздрический.
тобишь без зазвата
источник

RM

Roy Mustang in C++ Together 2.0
Типа мы при регистрации класс модуля указываем надо ли для данного класса модуля метод Update вызывать
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
Roy Mustang
Какой способ более предпочтителен в комьюнити плюсовиков?
Perfect forwarding
источник

A

Alex Ф-ф-фэils!🌠︙... in C++ Together 2.0
🦊fox.cpp
@AlexFails ты ему так и плашку не выдал
Лень, работать надо
источник

RM

Roy Mustang in C++ Together 2.0
Alex Ф-ф-фэils!🌠︙
Perfect forwarding
Куда в конструктор класса?
источник

W

Wild_Wind in C++ Together 2.0
Ой, щас бы без perf-a/valgrind-a перфоманс мерять.
источник

🦊

🦊fox.cpp in C++ Together 2.0
Wild_Wind
Ой, щас бы без perf-a/valgrind-a перфоманс мерять.
++
источник

RM

Roy Mustang in C++ Together 2.0
Пока никто не мерит, просто более предпочтительные варианты рассматриваю
источник

W

Wild_Wind in C++ Together 2.0
Бери и затесть на паре лямов объектов
источник

🦊

🦊fox.cpp in C++ Together 2.0
Roy Mustang
Типа мы при регистрации класс модуля указываем надо ли для данного класса модуля метод Update вызывать
Ну, если у тебя точка коллбека только одна - Update у класса, то нахер тебе std::function.
источник

RM

Roy Mustang in C++ Together 2.0
🦊fox.cpp
Ну, если у тебя точка коллбека только одна - Update у класса, то нахер тебе std::function.
Да, там же бесконечный цикл
источник

🦊

🦊fox.cpp in C++ Together 2.0
С std::function ты получишь тоже самое, только через два виртуальных вызова
источник

🦊

🦊fox.cpp in C++ Together 2.0
А не через один.
источник

RM

Roy Mustang in C++ Together 2.0
В данный момент если у класса модуля нет заоверрайженого метода Update, то абстрактный класс вызывает свой, где return true тупо
источник

🦊

🦊fox.cpp in C++ Together 2.0
Хотя хрен знает, опять же, как там std::function реализован.
источник

RM

Roy Mustang in C++ Together 2.0
Да я вот думаю, на это хуй забить можно или нет, не думаю что это будет оверхед
источник

🦊

🦊fox.cpp in C++ Together 2.0
🦊fox.cpp
Хотя хрен знает, опять же, как там std::function реализован.
Но я не верю, что type erasure может быть без оверхеда.
источник

RM

Roy Mustang in C++ Together 2.0
Если прикинуть что у нас 500 модулей в худшем случае и 100 из них имеет методы Update, то 400 вызовов произойдет с пустым методом Update()
источник

RM

Roy Mustang in C++ Together 2.0
Вот почему я спрашиваю
источник