Tra*_*isG 1 c++ string stdstring compiler-optimization
很多时候你会看到类似的东西
std::map<std::string, somethingelse> m_named_objects;
Run Code Online (Sandbox Code Playgroud)
要么
std::string state;
//...
if(state == "EXIT")
exit();
else if(state == "california")
hot();
Run Code Online (Sandbox Code Playgroud)
人们使用字符串纯粹是为了让事物更具可读性.使用整数ID可以轻松实现同样的功能.
现代编译器(msvc,g ++等)通常可以对这些类型的案例采用特殊优化吗?或者是否应该因性能不佳或其他原因而避免这种情况?
现代编译器(msvc,g ++等)通常可以对这些类型的案例采用特殊优化吗?
据我所知,编译器不进行这些优化.这绝对不是"标准"优化.
...人们使用字符串纯粹是为了让事物更具可读性.
至少对于你的第二种情况,在我看来,枚举更具可读性并且可以更快(因为整数比较相对于字符串比较而言相当便宜).
enum State
{
Alabama,
Alaska,
Arizona,
Arkansas,
California,
Colorado,
Connecticut,
Delaware,
// ... More
};
// ...
State state = California;
if(state == California) { /* true */ }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
261 次 |
| 最近记录: |