Это крошечные крошечные накладные расходы для использования функций обратного вызова при синхронном вычислении по сравнению с возвратом.
Да, обратные вызовы могут использоваться синхронно. Выезд CPS; или по причинам согласованности в API.
Эти служебные данные возникают из-за накладных расходов, связанных с функцией и поддержания стека вызовов, и поскольку вы часто используете блокировки в качестве обратных вызовов, для их создания также требуется небольшая накладная.
Но это будет микро-оптимизация, сопоставимая с заменой v * 2
на v << 1
(по соображениям производительности).
Если вам нужно оптимизировать такие вещи в своем коде, у вас есть некоторые серьезные проблемы в структуре вашего приложения.
Единственная проблема, которая возникает при одновременном вызове обратных вызовов, - это возможность в какой-то момент превысить максимальный размер стека.
Я провел несколько тестов с простым вычислительным механизмом и обнаружил, что асинхронные обратные вызовы немного медленнее, чем синхронные. Но вы должны понимать причины того, что они используются, а ответ - параллелизм больше, чем производительность. Они медленнее, потому что они проходят через EVENT LOOP. –
Спасибо! Я отредактирую свой вопрос, потому что мне любопытно, почему накладные расходы на производительность. Редактировать: Я вижу, что вы обновили свой комментарий, с объяснением, спасибо! – gillesC