Pouze tento týden sleva až 80 % na e-learning týkající se C# .NET
Nauč se s námi víc. Využij 50% zdarma na e-learningové kurzy.
C# week
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
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
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
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
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
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
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.