有网站源程序怎么做网站后台/seo赚钱吗
你很可能,但很难看出这一点.
异或:使用常量输入字节值并不比添加(或减去)常量快.并且它变成切换的好处(即toupper()和tolower()可以是相同的代码)非常小,因为代码量太小.
拆卸时,这两个功能:
int my_tolower1(int c)
{
return c + 'a' - 'A';
}
int my_tolower2(int c)
{
return c ^ ('a' - 'A');
}
几乎编译成相同的东西,模数当然add vs xor:
my_tolower1(int):
pushq %rbp
movq %rsp,%rbp
movl %edi,-4(%rbp)
movl -4(%rbp),%eax
addl $32,%eax
popq %rbp
ret
my_tolower2(int):
pushq %rbp
movq %rsp,%eax
xorl $32,%eax
popq %rbp
ret
addl和xorl指令都是三个字节,所以没有区别.我认为这些天他们在大多数有趣的cpu上都是单周期的.
请注意,正如我在评论中所说的那样,一般来说,你不应该绕过并假设你的C程序在你可以做出这些假设的环境中运行.然而,Linux内核就是这样一种环境.