Шаблон проектирования для замены вложенных циклов - PullRequest
1 голос
/ 24 декабря 2010

Есть ли шаблон проектирования или какой-то другой способ заменить огромное количество вложенных циклов?Единственная цель - повышение производительности.

например

for (int i=0; i<2000; i++)
{
    for (int j=0; j<2000; j++)
    {
       for (int k=0; k<2000; k++)
       {

       }
    }
}

Ответы [ 2 ]

5 голосов
/ 24 декабря 2010

В общем нет. Шаблон проектирования - это больше о том, как вы организуете свой код, чтобы сделать его понятным, поддерживаемым, расширяемым и т. Д. Благодаря этому вы можете получить более эффективный код, но не обязательно.

Если ваш алгоритм требует, чтобы вы посещали каждый элемент в трехмерной структуре данных размером 2000, тогда никакой шаблон проектирования не поможет, у вас просто есть алгоритм n ^ 3, и вы ничего не можете с этим поделать.

Единственная область для улучшения будет, если ваш алгоритм окажется наивным и, возможно, посещает больше элементов, чем строго требуется. вышеупомянутая гармоническая работа намекает на это, спрашивая, ищите ли вы; если это так, то, возможно, алгоритм поиска можно сделать более эффективным, но опять же, это не вопрос, касающийся шаблонов проектирования.

1 голос
/ 24 декабря 2010
for (int x=0; x < 2000*2000*2000; x++)
{
    // you can calculate here real values of i,j,k if you need this for smth
    // do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...