2016-07-21 2 views
-4

У меня есть алгоритм с for петлями, который выглядит как:производительности Java для цикла

for(A : collection) { 
    for (B : A.collection) { 
    for (C : B.collection) { 
     do something with C instance 
    } 
    } 
} 

Что является лучшим способом, чтобы оптимизировать производительность этого вложенного для петель?

Например, LinkedHashMap?

спасибо.

+0

Самая быстрая коллекция - это собственный массив - если вы можете использовать массив с циклом for (;;) - он будет самым быстрым. – Nosyara

+0

Пожалуйста, подумайте над пересмотром образца кода, который вы отправили в этом вопросе. Как и в настоящее время, его форматирование и масштабы затрудняют нам помощь; здесь [большой ресурс] (http://stackoverflow.com/help/mcve), чтобы вы начали с этого. -1, не принимайте это неправильно. Снижение голосов - это то, как мы указываем здесь проблему с контентом; улучшите форматирование и образец кода, и я с радостью верну его. Удачи с кодом! –

ответ

1

Очень вероятно, что программа потратит большую часть своего времени на часть do something with C instance. В этом случае оптимизация, вероятно, не стоит.

Кроме того, скорость итерации зависит от типа сбора. Массивы и ArrayList являются самыми быстрыми. Итерация более LinkedList и большинство других контейнеров происходит медленнее, поскольку для доступа к элементу требуются дополнительные указания. Vector также медленнее из-за сбоев в синхронизации.

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

Смежные вопросы