Avatar
martinsakra
Redaktor
Avatar
martinsakra:

Zdravim řešim v jednom programu problem s výpočetním výkonem, resp procházím pravidelně vcelku slušný počet objektů v kolekcích a mám tu situaci u které bych rád věděl jak je to s výkonem:

  1. mám 2d pole plných kolekcí (neptejte se proč, radil jsem se a tohle vypadá jako nejschudnější cesta), a pokud chci projet celé pole a všechny kolekce tak dělám
for (int i = 0; i < 500; i++) {
            for (int j = 0; j < 500; j++) {
                for (Object obj: ObjectsColection[i][j]) {

                }
            }
        }

je to rychlejší nebo pomalejší než kdybych udělal

for (int i = 0; i < 500; i++) {
            for (int j = 0; j < 500; j++) {
                 Collection col =  ObjectsColection[i][j]
                for (Object obj:col) {

                }
            }
        }

Nebo je to jedno?
Jako kolekci jsem použil linkedlist, přišel mě vhodný, od kolekce potřebuju přidat,odebrat, projít (jedno v jakým pořadí), ideálně všechno tohle za minimální množství času.

Odpovědět 23.12.2013 18:51
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na martinsakra
Juraj Mlich:

Prvá možnosť by mala byť o máličko rýchlejšia :)

Nahoru Odpovědět 23.12.2013 18:55
Vždy je lepšie učiť sa z cudzích chýb, než z vlastných chýb.
Avatar
Kit
Redaktor
Avatar
Odpovídá na martinsakra
Kit:

V principu by to po optimalizaci kompilátorem mělo být jedno, ale první řešení je mi mnohem sympatičtější.

Nahoru Odpovědět  +1 23.12.2013 19:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na martinsakra
Jan Vargovský:

Si to vyzkoušej ne ? Jestli nevyužíváš nijak dál u té první možnosti tu kolekci col, tak by ti to měl kompilátor stejně odstranit.

 
Nahoru Odpovědět 23.12.2013 19:11
Avatar
martinsakra
Redaktor
Avatar
Odpovídá na Kit
martinsakra:

ok a ještě tu kolekci? Funkce: projdi, přidej, odstraň (tj asi stejně znovu projdi), nějaká lepší jak linkedlist?, na pořadí procházení nezáleží

Nahoru Odpovědět 23.12.2013 19:12
Democracy is two wolves and a lamb voting on what to have for lunch. Liberty is a well-armed lamb contesting the vote.
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na martinsakra
Jan Vargovský:

Si pogoogli jaké kolekce jsou nejlepší na časté přidávání a mazání apod.

 
Nahoru Odpovědět 23.12.2013 19:17
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na martinsakra
David Čápka:

To budeš mít asi rychlejší list, ten je realizovaný polem. Nesměl bys ale mazat z prostředka.

Editováno 23.12.2013 19:22
Nahoru Odpovědět 23.12.2013 19:21
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na martinsakra
Kit:

Pokud máš v kolekcích méně než 1000 elementů, zvolil bych ArrayList. Pokud je modifikace méně častá, než procházení, tak i pro větší kolekce. ArrayList je při procházení o hodně rychlejší, než LinkedList.

Nahoru Odpovědět 23.12.2013 19:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.