2010-10-06 40 views
0

我正在寻找一个算法,以检查是否在一个流或缓冲器中的所有字节都相等相等。存在任何算法来测试?确定是否所有字节都在流中

我知道至极这个问题可以通过在小溪散步,每个元素的第一个元素进行比较,来解决,但我正在寻找一个更好的解决方案。流可以有一千个元素。

+4

自然算法是将每个字节与第一个字节进行比较。两行代码。它可以得到多简单或更快? – 2010-10-06 04:57:32

+0

dupe of http://stackoverflow.com/questions/3869526/how-to-determine-if-all-characters-in-a-string-are-equal? – rafl 2010-10-06 04:59:45

+1

如果你想比较A和B,尼基塔钉了它。如果您正在比较A到B,C和D等,那么消息散列将有助于减少需要进行的直接逐字节比较的次数。 – msw 2010-10-06 05:00:46

回答

2

每个字节必须被访问,并检查所以optimistation的机会似乎是有限的。我能想到的两种可能性:

你知道变化的情形产生什么?例如,是否有理由认为差异更可能出现在缓冲区的一端或另一端。您可以统计检查一些样本数据输入,看看在一端或另一端开始比较是否有任何好处。

另一种可能性:你可以在整数或多头工作?在C中,你可以玩指针技巧把4个相邻字节看作一个int,然后进行int比较而不是字节比较。这不是显而易见的,它必须比4倍的字节比较更快,但它可能是可能的。

这是为数不多的场合,即使手组装的触摸可能产生一些好处之一。