Добрый день,Производительность разваливается одной петли на две петли
Предположим, что у вас есть простой цикл, как показано ниже ...
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
}
Почему я задал такой глупый вопрос в том, что у меня есть система Collision Detection (CDS), который имеет цикл по всем объектам. Я хочу, чтобы «полочки» функциональность моей системы CDS, так что я могу просто позвонить
cds.update(objectlist);
вместо того, чтобы сломать мою систему CDs вверх. (Не беспокойтесь о моей реализации CDS ... Я думаю, что я знаю, что я делаю, я просто не знаю, как это объяснить, что мне действительно нужно знать, если я возьму огромный успех за цикл через все мои объекты снова.
Как отметил stefaanv, стоимость перекручивания через все объекты во второй раз неопределенна с информацией, которую вы дали. – patrickn
Я также хотел бы отметить, что две управляющие структуры, которые вы опубликовали, решают разные проблемы, и поэтому их легко сравнивать в контексте производительности. – patrickn
Не зная подробностей и без фактических измерений, невозможно сказать, какая версия быстрее. Кэширование, как данные, так и инструкция, а также предсказание ветвей (и -tables) и спекулятивное выполнение добавляют большую сложность в сегодняшнюю оптимизацию. Хорошая точка, хотя и при преждевременной оптимизации. Измерьте сначала в реальном мире, затем оптимизируйте. –