[编程技巧] 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++ 代码反而效率是最高的。
posted @ 2008-05-31 04:17  ajuanabc  阅读(207)  评论(0编辑  收藏  举报