通过 callgrind 运行我的应用程序发现,这条线比其他所有东西都相形见绌,大约是 10,000 倍。我可能会围绕它重新设计,但这让我想知道;有更好的方法吗?
这是我目前正在做的事情:
int i = 1;
while
(
(
(*(buffer++) == 0xffffffff && ++i) ||
(i = 1)
)
&&
i < desiredLength + 1
&&
buffer < bufferEnd
);
它正在寻找 32 位无符号整数数组中第一块所需长度 0xffffffff 值的偏移量。
它比我能想到的涉及内部循环的任何实现都要快得多。但它仍然太慢了。