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

Сообщение Re[7]: C++20 coroutines (co_await) от 10.01.2021 10:46

Изменено 10.01.2021 10:47 Evgeny.Panasyuk

Re[7]: C++20 coroutines (co_await)
Здравствуйте, х, Вы писали:

EP>>И потом, даже если делать in-place аллокатор для небольших корутин — то скроей всего будет либо перерасход памяти, либо таки аллокация в куче.

х>Можно выделать прямо в promise. Если код наш, то ограничить размер фрейма не большая проблема.

Проблема не только с размером, но и с оптимизацией как таковой. Не зная конкретного типа, в общем случае мы всегда обреченны делать runtime dispatch, так как это делает std::function. Более того, мы не можем заинлайнить весь генератор в вызывающий код в общем случае, особенно если этот генератор пришёл из вне.

х>Может в следующих версиях поправят.


Это не исправлять надо (к сожалению маловероятно что это произойдёт), а сразу надо было делать правильно, и уже были предложения как именно можно сделать оптимально. И были возражения по текущей версии, и автором приходелось отбрехиваться мол компилятор соптимизирует аллокацию.
Re[7]: C++20 coroutines (co_await)
Здравствуйте, х, Вы писали:

EP>>И потом, даже если делать in-place аллокатор для небольших корутин — то скроей всего будет либо перерасход памяти, либо таки аллокация в куче.

х>Можно выделать прямо в promise. Если код наш, то ограничить размер фрейма не большая проблема.

Проблема не только с размером, но и с оптимизацией как таковой. Не зная конкретного типа, в общем случае мы всегда обреченны делать runtime dispatch, так как это делает std::function. Более того, мы не можем заинлайнить весь генератор в вызывающий код в общем случае, особенно если этот генератор пришёл из вне.

х>Может в следующих версиях поправят.


Это не исправлять надо (к сожалению маловероятно что это произойдёт), а сразу надо было делать правильно, и уже были предложения как именно можно сделать оптимально. И были возражения по текущей версии, и авторам приходелось отбрехиваться мол компилятор соптимизирует аллокацию.