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++ 代码反而效率是最高的。
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,如需转载请自行联系原作者