作者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
推 jtmh:推,另補上 C FAQ 上相關的說明:218.175.148.121 06/01 16:28
推 legnaleurc:沒錯...我很久之前的測試結果140.123.104.223 06/02 10:28
→ legnaleurc:也是沒比較快140.123.104.223 06/02 10:28
推 pthuang:有人可以幫忙翻譯二樓的嗎?好想看懂.... 59.117.198.44 06/07 04:38