在数组中查找y的x个连续值的最有效方法是什么?

Max*_*Max 5 c c++ algorithm performance profiling

通过callgrind运行我的应用程序显示,这一行使其他所有内容相形见绌大约10,000倍.我可能会围绕它重新设计,但它让我感到疑惑; 有没有更好的方法呢?

这就是我现在正在做的事情:

int i = 1;
while
(
    (
        (*(buffer++) == 0xffffffff && ++i) || 
        (i = 1)
    )
    &&
    i < desiredLength + 1
    &&
    buffer < bufferEnd
);
Run Code Online (Sandbox Code Playgroud)

它正在寻找32位无符号整数数组中第一块desiredLength 0xffffffff值的偏移量.

它比任何涉及内循环的实现都要快得多.但它仍然太慢了.

Ala*_*air 3

您标记了 c++,所以我假设您有可用的 STL 算法:

std::search_n(buffer, bufferEnd, desiredLength, 0xffffffff);
Run Code Online (Sandbox Code Playgroud)