应该选择CRT吗?

今天对wcslen 做了下测试 发现vc CRT的wcslen 效率真的非常低,还是API高些

以下是对长度为 0x000016a3 的字符串做 1000000 次循环的结果

非对齐 (T2310)

mystrlenW     wcslen           lstrlenW

6282             28234             8859

对齐 (T2310)

6250             26375             8422

 

 

 

用汇编写的mystrlen1 使用简单的rep scasw 效率比lstrlenW差

用C写的mystrlenW,使用32位校正对齐方式,成绩略好于lstrlenW,但其功劳应归功于vc

VC9对C代码的优化程度可以看出编译器的工程师们水平登峰造极,查手册发现,其优化规则使用的指令竟然除了最长的shr之类为4个指令周期,其它都使用and or,甚至连 %都被优化成了or. 70~80%都是单指令周期

 

面strlen的效率比lstrlenA差,vc9也没有帮助我超过lstrlenA

 

通过测试可以发现如果有必须尽量使用API,毕竟它的使用率是最高的,所以应该都经过特别优化

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值