ran*_*dom 5 iteration performance loops
考虑类似......
for (int i = 0; i < test.size(); ++i) {
test[i].foo();
test[i].bar();
}
Run Code Online (Sandbox Code Playgroud)
现在考虑..
for (int i = 0; i < test.size(); ++i) {
test[i].foo();
}
for (int i = 0; i < test.size(); ++i) {
test[i].bar();
}
Run Code Online (Sandbox Code Playgroud)
这两者之间的时间差异很大吗?即实际迭代的成本是多少?看起来你重复的唯一真正的操作是增量和比较(尽管我认为这对于非常大的n来说会变得很重要).我错过了什么吗?
对于您的示例,您还需要额外关注成本有多高.size(),因为它是针对大多数语言中的每次i增量进行比较的。
有多贵?好吧,这取决于情况,这当然都是相对的。如果.foo()和.bar()都很昂贵,那么相比之下,实际迭代的成本可能微不足道。如果它们非常轻量级,那么它将占您执行时间的较大比例。如果您想了解特定案例测试,这是确定您的特定场景的唯一方法。
就我个人而言,我肯定会选择单次迭代来降低成本(除非您需要在调用.foo()之前进行调用.bar())。
| 归档时间: |
|
| 查看次数: |
258 次 |
| 最近记录: |