strcpy, lstrcpy 相关API实现字符串COPY, 性能之比较

本文对比了VC6和VS2008环境下,strcpy、lstrcpy、lstrcpyn、strncpy、memcpy以及自定义my_memcpy和StrNCpy在不同循环次数下的性能表现。测试结果显示,memcpy在某些情况下性能为0,lstrcpy在不依赖runtime lib的情况下表现出良好的性能,建议更多使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

n长度: 25, 字符串总长度: 56
字符串总长度: 57的测试也作了, 与此结果差不多.
时间单位:tick

 

测试结果如下:

 


编绎器: VC6

RELEASE
1亿次循环测试结果:
 lstrcpy=7437
 strcpy = 13047
 lstrcpyn = 6797
 strncpy = 1672
 memcpy = 0
 my_memcpy = 1313
 StrNCpy = 6812

1KW次循环测试结果:
 lstrcpy=734
 strcpy = 1313
 lstrcpyn = 672
 strncpy = 156
 memcpy = 0
 my_memcpy = 125
 StrNCpy = 688

100W次循环测试结果:
 lstrcpy=78
 strcpy = 125
 lstrcpyn = 78
 strncpy = 16
 memcpy = 0
 my_memcpy = 15
 StrNCpy = 63

DEBUG:
1亿次循环测试结果:

 lstrcpy=7734
 strcpy = 2172
 lstrcpyn = 7469
 strncpy = 1922
 memcpy = 1031
 my_memcpy = 5437
 StrNCpy = 7453

1KW次循环测试结果:
 lstrcpy=765
 strcpy = 219
 lstrcpyn = 734
 strncpy = 204
 memcpy = 93
 my_memcpy = 547
 StrNCpy = 750

100W次循环测试结果:
 lstrcpy=78
 strcpy = 31
 lstrcpyn = 63
 strncpy = 31
 memcpy = 0
 my_memcpy = 63
 StrNCpy = 78




VS2008 VC 测试:


RELEASE

1亿次循环测试结果:
 lstrcpy=7391
 strcpy = 4500
 lstrcpyn = 6093
 strncpy = 1735
 memcpy = 0
 my_memcpy = 1140
 StrNCpy = 6094

1KW次循环测试结果:
 lstrcpy=734
 strcpy = 454
 lstrcpyn = 609
 strncpy = 172
 memcpy = 0
 my_memcpy = 109
 StrNCpy = 610

100W次循环测试结果:
 lstrcpy=78
 strcpy = 47
 lstrcpyn = 47
 strncpy = 31
 memcpy = 0
 my_memcpy = 0
 StrNCpy = 63


DEBUG:
1亿次循环测试结果:

 lstrcpy=7734
 strcpy = 2797
 lstrcpyn = 6797
 strncpy = 2094
 memcpy = 1094
 my_memcpy = 7593
 StrNCpy = 6860

1KW次循环测试结果:
 lstrcpy=781
 strcpy = 282
 lstrcpyn = 687
 strncpy = 203
 memcpy = 110
 my_memcpy = 765
 StrNCpy = 688

100W次循环测试结果:
 lstrcpy=78
 strcpy = 32
 lstrcpyn = 62
 strncpy = 31
 memcpy = 0
 my_memcpy = 78
 StrNCpy = 79


memcpy 为什么总为:0 ?
关memcpy 性能参考: VC 对 memcpy 的优化:http://blog.codingnow.com/2005/10/vc_memcpy.html


结果:
1. CPU只用一个核
2. VS2008 作了相关优化, 在strcpy上与vc6 有很大不同.
3. lstrcpy 性能过的去, 并且不依赖runtime lib, 应该更多使用.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值