好日子,性能分崩离析一个循环分为两个循环
假设你有一个简单的像下面的循环......
for(int i=0;i<10;i++)
{
//statement 1
//statement 2
}
假设语句1和语句2是O(1 )。除了“启动”另一个循环的小开销之外,将循环分成两个循环(不是嵌套循环,而是顺序循环)的速度同样快吗?例如...
for(int i=0;i<10;i++)
{
//statement 1
}
for(int i=0;i<10;i++)
{
//statement 2
}
为什么我问这么愚蠢的问题是,我有过的所有对象必须环路碰撞检测系统(CDS)。我想“划分”我的CDS系统的功能,这样我就可以简单地调用
cds.update(objectlist);
,而不必打破我的CDS系统了。 (不要太担心我的CDS实现......我想我知道我在做什么,我只是不知道如何解释它,我真正需要知道的是如果我在循环中获得巨大的性能打击通过我的所有对象再次。
作为stefaanv指出,通过所有对象循环第二次的成本是不确定的你提供的信息。 – patrickn 2012-03-09 13:33:05
我还会注意到,您发布的两个控件结构解决了不同的问题,因此在性能上不易对比。 – patrickn 2012-03-09 13:41:24
不知道更多的细节和没有实际的测量,不可能说哪个版本更快。缓存,数据和指令,以及分支预测(和表)和推测执行都为当今的优化增加了很多复杂性。 虽然过早优化的好点。先在现实世界中测量,然后进行优化。 – 2012-03-16 16:34:42