boost :: function использование памяти - PullRequest
2 голосов
/ 29 ноября 2010

Я рассматриваю возможность использования boost::function в своей реализации менеджера таймера. В таймере расписания будет передано boost::function, а по истечении таймера будет выполнен обратный вызов. Время будет запланировано / отменено с очень высокой частотой (~ 1000 действий / сек).

Но меня беспокоит количество кучи памяти, которую может использовать boost::function.

Я знаю, например, что boost::asio использует boost::function, в то время как требования к производительности библиотеки, вероятно, очень высоки.

Что вы думаете?

Ответы [ 3 ]

3 голосов
/ 29 ноября 2010

На мой взгляд, маловероятно, что издержки boost::function станут определяющим фактором в коде управления таймером.

Правильное и эффективное построение очереди таймера, блокировка и сигнализация ожидающих потоков - гораздо более эффективное использование ваших мозговых циклов. Наоборот, это еще один аргумент в пользу из boost::function или аналогичный, чтобы избежать головной боли с «необработанными» обратными вызовами.

2 голосов
/ 29 ноября 2010

Взгляните на эту статью , может дать вам некоторую перспективу.

2 голосов
/ 29 ноября 2010

boost :: function - довольно маленький объект. Может быть в 2-3 раза больше обычного указателя на функцию, если есть.

...