Joe*_*oel 11 c++ string optimization
例如,假设a string s是这样的:
for(int x = 0; x < s.length(); x++)
Run Code Online (Sandbox Code Playgroud)
比这更好?:
int length = s.length();
for(int x = 0; x < length; x++)
Run Code Online (Sandbox Code Playgroud)
谢谢,乔尔
Mat*_* M. 14
通常,如果结果在迭代期间没有改变,则应该避免在循环的条件部分中进行函数调用.
因此,规范形式是:
for (std::size_t x = 0, length = s.length(); x != length; ++x);
Run Code Online (Sandbox Code Playgroud)
注意事项3:
!=而不是表示<(我也更改了类型,因为负长度是无意义的,字符串接口是按照术语定义的std::string::size_type,通常std::size_t在大多数实现中).
虽然......我承认它不是为了表现而是为了可读性:
x和length范围都必要时紧密简而言之:使用最好的工具来完成手头的工作:)
这取决于编译器的内联和优化能力。通常,第二个变体很有可能会更快(更好:它会比第一个片段更快或更快,但几乎永远不会变慢)。
但是,在大多数情况下,这并不重要,因此人们倾向于首选第一个变体,因为它很短。
| 归档时间: |
|
| 查看次数: |
11527 次 |
| 最近记录: |