美好的一天,
假设您有一个简单的for循环,如下所示......
for(int i=0;i<10;i++)
{
//statement 1
//statement 2
}
Run Code Online (Sandbox Code Playgroud)
假设语句1和语句2是O(1).除了"开始"另一个循环的小开销之外,将for循环分解成两个(不是嵌套的,但顺序的)循环同样快吗?例如...
for(int i=0;i<10;i++)
{
//statement 1
}
for(int i=0;i<10;i++)
{
//statement 2
}
Run Code Online (Sandbox Code Playgroud)
为什么我问这样一个愚蠢的问题是我有一个碰撞检测系统(CDS)必须遍历所有对象.我想"划分"我的CDS系统的功能,所以我可以简单地打电话
cds.update(objectlist);
Run Code Online (Sandbox Code Playgroud)
而不是必须破坏我的CD系统.(不要过分担心我的CDS实现......我想我知道我在做什么,我只是不知道如何解释它,我真正需要知道的是我是否因为循环而受到巨大的性能影响再次通过我的所有对象.
这取决于您的应用程序。
(分裂)可能的缺点:
可能的收益(分裂):
这些列表当然并不全面,但您已经可以感觉到代码和数据之间存在紧张关系。因此,当我们两者都不知道时,我们很难做出有根据的/疯狂的猜测。
有疑问:个人资料。使用callgrind,检查每种情况下的缓存未命中情况,检查执行的指令数。衡量所花费的时间。
归档时间: |
|
查看次数: |
2617 次 |
最近记录: |