APR(Apache Portable Runtime) hook 效率高吗?
Is APR(Apache Portable Runtime) hook efficient?
我想用APR hook实现function_A,但不知道效率高不高。
有没有人用过APR hook或者知道工作原理?如果有详细的图或者数据就更好了
非常感谢!
APR 钩子非常高效,钩子的调用是一个扩展为循环函数指针数组并调用它们的宏。
#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ns,link,ret,name,args_decl,args_use,decline) \
APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \
link##_DECLARE(ret) ns##_run_##name args_decl \
{ \
ns##_LINK_##name##_t *pHook; \
int n; \
ret rv; \
\
if(!_hooks.link_##name) \
return decline; \
\
pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \
for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \
{ \
rv=pHook[n].pFunc args_use; \
\
if(rv != decline) \
return rv; \
} \
return decline; \
}
所以从性能的角度来看,真的没有理由避免它们。
我想用APR hook实现function_A,但不知道效率高不高。 有没有人用过APR hook或者知道工作原理?如果有详细的图或者数据就更好了
非常感谢!
APR 钩子非常高效,钩子的调用是一个扩展为循环函数指针数组并调用它们的宏。
#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ns,link,ret,name,args_decl,args_use,decline) \
APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \
link##_DECLARE(ret) ns##_run_##name args_decl \
{ \
ns##_LINK_##name##_t *pHook; \
int n; \
ret rv; \
\
if(!_hooks.link_##name) \
return decline; \
\
pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \
for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \
{ \
rv=pHook[n].pFunc args_use; \
\
if(rv != decline) \
return rv; \
} \
return decline; \
}
所以从性能的角度来看,真的没有理由避免它们。