Commit b967dac8 authored by Rusty Russell's avatar Rusty Russell

mem: optimize.

Better for larger, worse for smaller compares.

Before:
1: 3ns
2: 3ns
4: 5ns
8: 9ns
16: 11ns
32: 33ns
64: 45ns
128: 87ns
256: 157ns
512: 296ns
1024: 579ns
2048: 1139ns
4096: 2251ns
8192: 4505ns
16384: 9704ns
32768: 18482ns
65536: 36144ns
2: 4ns
3: 6ns
5: 8ns
9: 9ns
17: 12ns
33: 22ns
65: 45ns
129: 90ns
257: 175ns
513: 357ns
1025: 607ns
2049: 1204ns
4097: 2278ns
8193: 4552ns
16385: 9011ns
32769: 18405ns
65537: 36153ns
total = 599391004

After:
1: 6ns
2: 7ns
4: 7ns
8: 7ns
16: 7ns
32: 8ns
64: 9ns
128: 13ns
256: 24ns
512: 47ns
1024: 92ns
2048: 185ns
4096: 376ns
8192: 739ns
16384: 1463ns
32768: 2914ns
65536: 5800ns
2: 7ns
3: 7ns
5: 7ns
9: 7ns
17: 7ns
33: 8ns
65: 9ns
129: 20ns
257: 31ns
513: 49ns
1025: 96ns
2049: 189ns
4097: 381ns
8193: 745ns
16385: 1477ns
32769: 2930ns
65537: 5824ns
total = 599391004
Signed-off-by: default avatarRusty Russell <rusty@rustcorp.com.au>
parent ca2551bc
......@@ -92,12 +92,13 @@ void memswap(void *a, void *b, size_t n)
bool memeqzero(const void *data, size_t length)
{
const unsigned char *p = data;
static unsigned long zeroes[16];
while (length) {
if (*p)
while (length > sizeof(zeroes)) {
if (memcmp(zeroes, p, sizeof(zeroes)))
return false;
p++;
length--;
p += sizeof(zeroes);
length -= sizeof(zeroes);
}
return true;
return memcmp(zeroes, p, length) == 0;
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment