[编程技巧] C++字符串初始化的优化写法

C++中,有很多种字符串变量初始化方式,最常见的写法是:
WCHAR szBuffer[128] = {0};  或者 WCHAR szBuffer[128] = L"";
其实这种写法的代码效率比较低,因为编译之后的汇编代码调用了 memset 函数。      
WCHAR szBuffer[128] = {0};
04906922  mov         word ptr [szBuffer],0 
0490692B  push        0FEh 
04906930  push        0    
04906932  lea         ecx,[ebp-13Eh] 
04906938  push        ecx  
04906939  call        memset (4807C7Ah)
正确的初始化写法应该是:
  
WCHAR szBuffer[128];
szBuffer[0] = 0;
虽然C++代码比较丑陋,但是汇编码却是很简介的。 编译之后产生的汇编码只有:
  
04906922  mov         word ptr [szBuffer],0 
总结: C++ 编程中很值得注意一点就是,C++ 代码的简介并不一定能够带来效率,有时候繁琐的C++ 代码反而效率是最高的。


 本文转自 陈本峰 51CTO博客,原文链接:http://blog.51cto.com/wingeek/273926,如需转载请自行联系原作者
上一篇:日志文件管理者:Logrotate


下一篇:10款HTML5编码简化工具