"""
Na tohle je ideální bitset - ve 32-bitovém int označím bity, které mě zajímají a pak jen if (c <= 32 && ((c-1)&WHITESPACE_BITS) != 0) ... (s optimalizací pro 32-bit architektury - předpokládám, že c == '\0' je ošetřeno jinde)
"""
Clang je chytrej
void eat_white() {
while (_pos < _str.length()) {
char c = _str[_pos];
if (c != '\r' && c != '\n' && c != '\t' && c != ' ') break;
++_pos;
}
}
přeloží jako
0x555555557040 :
...
mov 0x68(%rsp),%rax
movzbl (%rax,%r15,1),%eax
cmp $0x20,%rax
ja 0x5555555570a0
movabs $0x100002600,%rcx
bt %rax,%rcx
jae 0x5555555570a0
inc %r15
cmp %r15,%rbp
jne 0x555555557040
...
0x5555555570a0:
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 51 063×
Přečteno 23 939×
Přečteno 22 871×
Přečteno 20 952×
Přečteno 17 760×