On 22/10/2015 17:47, Bernhard Voelker wrote: >> Note the above does break early if non zero detected in first 16 bytes. >> >> Also I suspect the extra conditions involved in using longs >> for just the first 16 bytes would outweigh the benefits? >> I.E. the first simple loop probably breaks early, and if not >> has the added benefit of "priming the pumps" for the subsequent memcmp(). > > what about spending some 16 bytes of memory and do the memcmp on the whole > buffer? > > static unsigned char p[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; > return 0 == memcmp (p, buf, bufsize);
memcmp has high setup costs, because the compiler doesn't know it as well as memcpy, so no. :( Nerd sniping at its best! Paolo