设为首页 加入收藏

TOP

高质量程序设计指南:strcpy的实现
2014-11-23 21:26:52 来源: 作者: 【 】 浏览:22
Tags:高质量 程序设计 指南 :strcpy 实现

  strcpy 看似是标准函数库里面最简单的函数了,谁都可以实现这个函数,


  但是,并不一定谁都能实现的很好。林锐博士面试微软的时候,就做这个题目。


  他也没有把这个题目完全的做对。建议你自己先动手写一个自己的,不要先看


  答案。估计有 90%的人写出来的,达不到性能的要求。


  标准答案是这样的:


  static char * strcpy(char *dest, const char *src)


  {


  assert(dest != NULL && src != NULL);


  char *ret = dest;


  while ((*dest++ = *src++) != '\0');


  return ret;


  }


  测试了一下,这个函数,在10亿数据规模的复制,在我电脑上大概是 140 ms (release)


  下面的写法基本上可以判定是错误:


  static char * strcpy(char *dest, const char *src)


  {


  assert(dest != NULL && src != NULL);


  char *ret = dest;


  while ((*dest = *src) != '\0')


  {


  dest++;


  src++;


  }


  return ret;


  }


  可能你会很奇怪,为什么这个是错误的。这个写法大概损失 10%的性能,而且和编译器能优化的程度有关。原因你看反汇编的代码就知道,指令增加了不少。因为,你要给出一个最优的结果。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇用C写最简单的Windows窗口程序:WI.. 下一篇编程实现自定义系统右键菜单功能

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: