作者wowtiger (小虎)
看板Programming
标题Re: [c的指标]一个简单的小问题,有没有比较好的解释?
时间Sun Jun 1 15:54:27 2008
※ 引述《IsfunHDS (Isfun)》之铭言:
: void swap(int &x,int &y)
: {
: x=x^y;
: y=x^y;
: x=x^y;
: }
: 这个是用call by ref
: 不过是用位元运算 速度比较快
看情况
似乎并没有比较快
196672
131139
swap看起来就需要3cycles
swap2只需要2cycles
--
#include <stdio.h>
__int64 rdtsc() { __asm rdtsc }
__inline void swap(int &x,int &y)
{
x=x^y;
y=x^y;
x=x^y;
}
__inline void swap2(int &x,int &y)
{
int z;
z=x;
x=y;
y=z;
}
void main() {
__int64 a;
int b,c,d;
b=1;
c=2;
d=65536;
a=rdtsc();
while(d--) swap(b,c);
a=rdtsc()-a;
printf("%ld\n",a);
d=65536;
a=rdtsc();
while(d--) swap2(b,c);
a=rdtsc()-a;
printf("%ld\n",a);
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.59.154.31
1F:推 jtmh:推,另补上 C FAQ 上相关的说明:218.175.148.121 06/01 16:28
3F:推 legnaleurc:没错...我很久之前的测试结果140.123.104.223 06/02 10:28
4F:→ legnaleurc:也是没比较快140.123.104.223 06/02 10:28
5F:推 pthuang:有人可以帮忙翻译二楼的吗?好想看懂.... 59.117.198.44 06/07 04:38