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

Java Java šetření výkonem - kolekce

Aktivity (1)
Avatar
martinsakra
Redaktor
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
Redaktor
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
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: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  +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ý: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
Redaktor
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ý
Redaktor
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 Čápka
Tým ITnetwork
Avatar
Odpovídá na martinsakra
David Čápka: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
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: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.