Выносим моск дальше, но с пользой - теперь в конфиге можно ставить пробелы и табы после '='
#define likely(x) __builtin_expect(!!(x), 1) // Вместо JNZ будет JE (асм.) :)
#define prefetch(x) __builtin_prefetch(x) // Нириальный разгон void getparamvalue(char *parseline) {
const char *vpos = rawmemchr(parseline, '=');
if (likely(vpos++)) {
while (*++vpos == ' ' || *vpos == '\t') {;}
prefetch(parseline); // Чтоб в кэше валялось
memmove(parseline, vpos, strlen(vpos) + 1);
} else
parseline[0] = '\0';
}
И нипёт :)
403b5d: 3c 09 cmp $0x9,%al
403b5f: 74 e5 je 403b46 <getparamvalue+0x36>
403b61: 48 8b 45 e8 mov -0x18(%rbp),%rax
403b65: 0f 18 08 prefetcht0 (%rax)
403b68: 48 8b 45 f8 mov -0x8(%rbp),%rax
403b6c: 48 c7 45 e0 ff ff ff movq $0xffffffffffffffff,-0x20(%rbp)
YES!!! je и prefetch - есть!!! :)