介绍

本章介绍几个常用的宏, 合适的选择它们能让Libev在内部更加高效的运行.

EV_USE_FLOOR

如果它被定义为1, 则使用math库的floor来计算周期时钟. 否则, Libev会使用自己实现的版本(低效). 而通常使用math库的话必须连接到libm, 所以如果您的libc如果支持的话最好定义为1.

EV_NO_SMP

EV_NO_THREADS

如果这两个被定义为1, Libev会假设当前进程不会运行在多线程环境下. 这会让Libev减少更多依赖, 理>论上会运行的更快.

EV_VERIFY

这个宏控制内部需要进行多少验证, 而如果在开发期间请根据下列进行设置:

  • 0则不会编译内部验证代码.
  • 1则虽然会编译但不会运行.
  • 23的差别仅是调用频繁次数的差别.

调用验证会极大程度的降低Libev的运行速度, 所以在生产环境下一般定义为0.

EV_USE_4HEAP

如果定义为1. 内部会将最小堆的二叉树换成四叉对, 这在计时器数量较多的情况下能略微提升性能.

EV_HEAP_CACHE_AT

如果定义为1. 内部会在堆内使用额外的内存缓存结构, 这样每次调整的时候能避免随机方位堆结构. 同样能在计时器数量较多的情况下略微提升性能.

EV_USE_SELECT

EV_USE_POLL

EV_USE_EPOLL

EV_USE_LINUXAIO

EV_USE_IOURING

EV_USE_KQUEUE

EV_USE_PORT

EV_USE_DEVPOLL

根据不同的平台指定合适的后端, 这些后端其中一些是可以组合使用的.

EV_USE_TIMERFD

EV_USE_EVENTFD

EV_USE_SIGNALFD

Linux特定平台的一些宏, 在支持的时候使用它们能降低内部消耗.