手机能玩的h游戏百度云:C中3种字符串赋值的效率

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/09 19:19:11
各位大侠,本人想问一下关于C中memcpy,strcpy,sprintf对一个字符数组赋值得效率,比如说
char x[51];
memset(x,0,sizeof(x));
然后分别处理
memcpy(x,"just a test",11);
strcpy(x,"just a test");
sprintf(x,"just a test");
谁效率高?谁效率低?最好能从机制上解释一下,为什么会这样,谢谢!!
请麻烦说明sprintf慢的原因,谢谢

memcpy一次读取所有源数据,然后一次传到目标地址,速度快。
strcpy需要逐个字符判断是否结束符,是一次读一个字节,比memcpy慢。
sprintf具体细节我不太清楚,不过我猜可能会有检测输出格式的步骤,所以可能更慢。

sprintf不是可能更慢。
而是非常慢。

memcpy 和strcpy在一般的硬件上,效率差不多。一个判断循环变量(长度)
一个判断字符串结束符。
当然,在流水线或DMA存在的情况下,memcpy 效率要高,可以不受CPU干预的传输数据