POSIX lfind()/lsearch()是否比手动循环性能更好?

POSIX lfind()/lsearch()是否比手动循环性能更好?,c,linux,algorithm,posix,libc,C,Linux,Algorithm,Posix,Libc,是否比检查每个项目直到其匹配的典型循环解决方案性能更好?这些函数的存在有什么特殊的原因吗?可能它们的效率没有自制版本高,因为比较函数不能内联,所以效率可能更低 但这肯定不是他们的重点。它们完成了其他搜索函数的API,特别是bsearch和tsearchMeasure 你只能通过测量来了解绩效。在你我的计算机上,情况完全不同(我甚至可能没有POSIX compiant编译器,无法测量lfind我自己)。在一个程序的不同运行中,思维是不同的 因此,如果您需要了解,请多次尝试lfind和自制方法,并测

是否比检查每个项目直到其匹配的典型循环解决方案性能更好?这些函数的存在有什么特殊的原因吗?

可能它们的效率没有自制版本高,因为比较函数不能内联,所以效率可能更低

但这肯定不是他们的重点。它们完成了其他搜索函数的API,特别是
bsearch
tsearch

Measure

你只能通过测量来了解绩效。在你我的计算机上,情况完全不同(我甚至可能没有POSIX compiant编译器,无法测量
lfind
我自己)。在一个程序的不同运行中,思维是不同的

因此,如果您需要了解,请多次尝试
lfind
和自制方法,并测量


无论如何<代码>C库函数可能未在
C
中编写。如果您的
lfind
是用
Python
编写的,我敢打赌它会比自制方法慢:)

我在eglibc-2.11.1中阅读了lfind/lsearch的源代码,根本没有进行任何特殊优化。正如您所说的,无法内联是最大的问题。