yoi*_*cis 1 c c++ optimization micro-optimization
可以说我们有一个负整数说int a;
是否有更快的-a实现?
我必须对此进行一些按位操作吗?
pax*_*blo 26
几乎可以肯定没有什么比机器代码NEG指令更快,你的编译器很可能会把它变成.
如果有的话,我确信编译器会使用它.
对于二进制补码数,你不能加1,但这几乎肯定会慢一点.但我并不完全确定C/C++标准要求使用二进制补码(他们可能,我没有检查).
我认为这个问题属于那些试图重写strcpy()等人以获得更快速度的问题.那些人天真地认为C库strcpy()尚未通过使用特殊的机器代码指令进行大量优化(而不是大多数人第一次尝试的简单循环).
您是否进行过性能测试,这些测试似乎表明您的否定需要花费相当长的时间?
<含蓄幽默,或 - 什么 - 我的妻子通话,无趣>
</含蓄幽默,或 - 什么 - 我的妻子通话,无趣>
澄清Pax的陈述,
除1例外,C++编译器不强制使用二进制补码.将有符号类型转换为无符号类型时,如果数字为负数,则转换结果必须是整数的2的补码表示.
简而言之,没有比-a更快的方法; 即使有,它也不会便携.请记住,过早优化是邪恶的.首先描述您的代码,然后解决瓶颈问题.
参见The C++ Programming Language,3rd Ed.,C.6.2.1节.
| 归档时间: |
|
| 查看次数: |
1220 次 |
| 最近记录: |