Dav*_*eng 2 c c++ optimization
假设我们有一个运行100次的循环.用unsigned char而不是int用它的计数器有所作为吗?还用i += 1U而不是i++?或者编译器会处理这个问题?
在简单的情况下intvs unsigned char为我提供相同的代码:
for ( unsigned char i = 0; i < 100; ++i ) {
01081001 mov esi,64h
01081006 jmp main+10h (1081010h)
01081008 lea esp,[esp]
0108100F nop
std::cout << 1 << std::endl;
01081010 mov eax,dword ptr [__imp_std::endl (108204Ch)]
01081015 mov ecx,dword ptr [__imp_std::cout (1082050h)]
0108101B push eax
0108101C push 1
0108101E call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (1082044h)]
01081024 mov ecx,eax
01081026 call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (1082048h)]
0108102C dec esi
0108102D jne main+10h (1081010h)
}
return 0;
Run Code Online (Sandbox Code Playgroud)
您应该分析您的代码,然后优化慢速部分.不要以过早优化开始.