CString 的 Format 与 赋值效率

今天在重构自己的代码时发现了其中有大量的CString 的 Format调用,突然想到Format与直接赋值(=)效率对比。

猜想,应该是 赋值 效率高,第一感觉是 Format是明显的函数调用,但是赋值也包含自复制函数,是否会影响效率。实验验证一下。


VS2010编译:源码

CString mystr = "Mydemo";
			CString strTest;
			strTest.Format("%s", mystr);
			strTest = mystr;

对比 Format 与 赋值= 汇编:

   38: 			strTest.Format("%s", mystr);
002C156A 8B F4                mov         esi,esp  
002C156C 8B 45 D4             mov         eax,dword ptr [mystr]  
002C156F 50                   push        eax  
002C1570 68 70 88 2C 00       push        offset string "%s" (2C8870h)  
002C1575 8D 4D C8             lea         ecx,[strTest]  
002C1578 51                   push        ecx  
002C1579 FF 15 1C C4 2C 00    call        dword ptr [__imp_ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char> > >::Format (2CC41Ch)]  
002C157F 83 C4 0C             add         esp,0Ch  
002C1582 3B F4                cmp         esi,esp  
002C1584 E8 07 FC FF FF       call        @ILT+395(__RTC_CheckEsp) (2C1190h)  
    39: 			strTest = mystr;
002C1589 8B F4                mov         esi,esp  
002C158B 8D 45 D4             lea         eax,[mystr]  
002C158E 50                   push        eax  
002C158F 8D 4D C8             lea         ecx,[strTest]  
002C1592 FF 15 20 C4 2C 00    call        dword ptr [__imp_ATL::CStringT<char,StrTraitMFC_DLL<char,ATL::ChTraitsCRT<char> > >::operator= (2CC420h)]  
002C1598 3B F4                cmp         esi,esp  
002C159A E8 F1 FB FF FF       call        @ILT+395(__RTC_CheckEsp) (2C1190h)  

一目了然

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值