2014-08-29 3 views
1

У меня есть два независимых процесса: один использует вызовы функции обратного вызова, а другой - обычные вызовы функций. Какой процесс будет выполняться быстрее?Прямые вызовы функций выполняются быстрее, чем вызовы функций обратного вызова?

+0

Что вы подразумеваете под «функцией обратной связи»? – Mabus

+0

Функция обратного вызова - это ничего, но с помощью указателей на функции – srinuvenu

+0

Это, похоже, не имеет ничего общего с программированием. – Vatine

ответ

2

Как сказал Сринувену, вызов функции обратного вызова подобен вызову функции. Когда вы вызываете указатель на функцию, происходит то, что извлекается адрес функции в указателе. У вас есть следующие сценарии:

Прямой вызов функции:
Выполнить код по указанному адресу.

Обратный вызов функции:
Получить адрес функцииExecute код по указанному адресу.

Как вы можете видеть, вызов функции обратного вызова добавляет дополнительный шаг: получение адреса функции. В заключение, использование обратных вызовов медленнее, чем прямые вызовы функций, а потому, что шаг получения адреса очень быстрый (как указано ниже в Mabus), скорости звонка должны быть очень похожими.

+2

Но этот шаг очень быстрый. Фактически, большинство языков программирования OO постоянно используют обратные вызовы для достижения полиморфизма. – Mabus

Смежные вопросы