已为 Linux 内核提出了 memchr 函数的实现,运行速度提高了 4 倍

已建议将一组具有 memchr() 函数优化实现的补丁(用于搜索数组中的符号)包含在 Linux 内核中。 与使用逐字节比较的旧版本不同,建议的实现是考虑到充分利用 64 位和 32 位 CPU 寄存器而构建的。 比较是使用机器字而不是字节来执行的,这允许一次至少比较 4 个字节。

在大型字符串中搜索时,新选项的速度比旧选项快约 4 倍(例如,对于 1000 个字符的字符串)。 对于小字符串,新实现的效率不是那么显着,但与原始版本相比仍然更高。 在Linux内核中,memchr()处理的字符串大小达到512字节。 在搜索字符位于字符串末尾的情况下,512 字节字符串的性能增益为 20%。

使用针对 5.18 位和 32 位体系结构的新“memchr()”选项测试 64 内核,没有发现任何问题。 尚未评估使用“memchr()”优化版本时内核子系统的整体性能增益,也没有分析替换实现的可行性(在内核代码中,对 memchr() 函数的调用发生了 129 次,包括在驱动程序和文件系统的代码中)。

来源: opennet.ru

添加评论