亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3899 | 回復: 15
打印 上一主題 下一主題

strcpy VS memcpy, 不看不知道,一看嚇一跳 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2010-08-05 17:10 |只看該作者 |倒序瀏覽
網(wǎng)上搜了搜,都說memcpy比strcpy快,理論上來說也能說得通。但運行的結(jié)果讓我大吃一驚。strcpy比memcpy快40%
  1. //g++ -g malloc.c
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <sys/time.h>
  5. #include <string.h>

  6. #define SIZE 128

  7. struct timeval begin, end;
  8. char source[SIZE], destination[SIZE];

  9. void mcp(char* dst, char* src, int len, int num)
  10. {
  11.     for(int i = 0; i<num; i++)
  12.     {
  13.         memcpy(dst, src, len);
  14.     }
  15. }

  16. void strcopy(char* dst, char* src, int num)
  17. {
  18.     for(int i = 0; i<num; i++)
  19.     {
  20.         strcpy(dst, src);
  21.     }
  22. }

  23. int main(int argc, char** argv)
  24. {
  25.     int num;

  26.     if ( argc < 2 )
  27.     {
  28.         printf("usage: %s num\n", argv[0]);
  29.         exit(1);
  30.     }
  31.     num = atoi(argv[1]);

  32.     memset(source, 0x21, sizeof(source));
  33.     source[sizeof(source)-1] = '\0';

  34.     gettimeofday(&begin, NULL);
  35.     mcp(destination, source, 128, 600000);
  36.     gettimeofday(&end, NULL);
  37.     printf("dur: %u seconds, %u micro sec\n", end.tv_sec-begin.tv_sec, end.tv_usec-begin.tv_usec);
  38.    
  39.     gettimeofday(&begin, NULL);
  40.     strcopy(destination, source, 600000);
  41.     gettimeofday(&end, NULL);
  42.     printf("dur: %u seconds, %u micro sec\n", end.tv_sec-begin.tv_sec, end.tv_usec-begin.tv_usec);
  43.     return 0;
  44. }
復制代碼
#:~/test$ ./a.out 2
dur: 0 seconds, 64623 micro sec
dur: 0 seconds, 46371 micro sec

論壇徽章:
0
2 [報告]
發(fā)表于 2010-08-05 17:20 |只看該作者
本帖最后由 ilwmin 于 2010-08-05 17:25 編輯

靜待高手解答

論壇徽章:
0
3 [報告]
發(fā)表于 2010-08-05 17:20 |只看該作者
你的程序,我的結(jié)果
  1. $ ./a.out 2
  2. dur: 0 seconds, 11797 micro sec
  3. dur: 0 seconds, 64604 micro sec
復制代碼

論壇徽章:
0
4 [報告]
發(fā)表于 2010-08-05 17:23 |只看該作者
測試結(jié)果:
[root@localhost test]# ./2 2
dur: 0 seconds, 13710 micro sec
dur: 0 seconds, 62005 micro sec

論壇徽章:
1
午馬
日期:2013-08-23 23:39:47
5 [報告]
發(fā)表于 2010-08-05 17:24 |只看該作者
03年的ID, 來惡作劇么

論壇徽章:
0
6 [報告]
發(fā)表于 2010-08-05 17:24 |只看該作者
我也嚇了一大跳。。。。

論壇徽章:
0
7 [報告]
發(fā)表于 2010-08-05 17:25 |只看該作者
不過我這里結(jié)果還是memcpy要快一些.快一倍多.

論壇徽章:
0
8 [報告]
發(fā)表于 2010-08-05 17:27 |只看該作者
你for寫的不好。

論壇徽章:
0
9 [報告]
發(fā)表于 2010-08-05 17:33 |只看該作者
測試結(jié)果:
[root@localhost test]# ./2 2
dur: 0 seconds, 13710 micro sec
dur: 0 seconds, 62005 mic ...
rain_fish 發(fā)表于 2010-08-05 17:23



嗯,我又看了一下,和優(yōu)化很有關(guān)系,如果編譯時用:
#:~/test$ g++ -g -O2 malloc.c
#:~/test$ ./a.out
dur: 0 seconds, 9993 micro sec
dur: 0 seconds, 28225 micro sec

所以,你可以試試g++ -g -O0 malloc.c, 再測測

論壇徽章:
0
10 [報告]
發(fā)表于 2010-08-05 17:34 |只看該作者
你for寫的不好。
prolj 發(fā)表于 2010-08-05 17:27


期待給出源碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP