Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: šetření výkonem - kolekce

Aktivity
Avatar
martinsakra
Tvůrce
Avatar
martinsakra:23.12.2013 18:51

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
Tvůrce
Avatar
Odpovídá na martinsakra
Juraj Mlich:23.12.2013 18:55

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

 
Nahoru Odpovědět
23.12.2013 18:55
Avatar
Kit
Tvůrce
Avatar
Odpovídá na martinsakra
Kit:23.12.2013 19:09

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
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ý
Tvůrce
Avatar
Odpovídá na martinsakra
Jan Vargovský:23.12.2013 19:11

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
Tvůrce
Avatar
Odpovídá na Kit
martinsakra:23.12.2013 19:12

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ý
Tvůrce
Avatar
Odpovídá na martinsakra
Jan Vargovský:23.12.2013 19:17

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 Hartinger
Vlastník
Avatar
Odpovídá na martinsakra
David Hartinger:23.12.2013 19:21

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
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na martinsakra
Kit:23.12.2013 19:24

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.