Þær gagnagrindur sem auðveldast er að breyta til að bæta afköst eru söfn, sem skiptast í sett, lista eða fylki, og hakkatöflur (maps, vantar íslensku, minnir að ég hafi heyrt hakkatöflur einu sinni).

Þar sem þessi söfn eru mikið notuð og fást oft við mikinn fjölda gilda í einu er mikilvægt að velja hentugastu tegund safna sem í boði er. Sumar útfærslur safna eru byggðar til að höndla röðun gilda og það dregur úr hraða. Þegar röðun skiptir ekki máli, þá er betra að nota algjörlega óraðaða útfærslu í staðin.

Í Java þarf að huga að því hvaða hlutir eru synchronized (íslenska? Samstilltir?) eða ekki, yfirleitt þurfa hlutir ekki að vera það, en það er efni í aðra grein. Þumalputtaregla um synchronization í Java, notið ArrayList og HashMap frekar en Vector í fjölþráðaumhverfi þegar ekki þarf að huga sérstaklega að samstillingu.

Einföld fylki eru hröðustu gagnagrindurnar þar sem hægt er að nota þær. String[] er besta leiðin til að geyma strengi, hraðvirkara en listar eins og ArrayList, sem betur eru fallnir til að geyma flóknari hluti. Reynið að nota grindur sem til eru í libraryum þegar þið getið, þær grindur er búið að besta og eyða meiri vinnu í en venjulegur forritari getur sett í sína sérsmíði, og að auki er kóðinn þar stöðugur.

Öflugasta leiðin til að auka afköst í gagnagrindum er að huga að stærðum safnanna og stilla þær í rétt.

- Vill gleymast því flest eru söfnin dynamísk, kóðinn þýðist og keyrist, en er ekki vel skrifaður.

- Vörumst að hakkatöflur stækki umfram það sem hún getur tekið, leiðir til margfaldra hnúta.

- Stærri hakkakóði tryggir betri dreifni gagna í hakkatöflum og bætir afköst.

- Upphafsstillum lista af kostgæfni, forðumst að listinn þurfi að stækka.

- Stillum hversu mikið listi á að stækka í einu ef það er hægt.

- Að bæta við og taka af endum lista eykur afköst, komumst hjá hliðrunum innan listans.



Upphafsstillingar á söfnum er hlutur sem þarf að venja sig á gera.

Svo ég nefni eitt dæmi, þegar dælt er úr ResultSettum gagnagrunna inn í fylki er ekkert einfaldara en að búa til fylki jafnstórt ResultSettinu;

- new ArrayList(ResultSet.getFetchSize()))

Allt of oft rekst ég á að þetta er ekki gert, einfaldasti hlutur í heimi

Ef sóttar voru allar 300.000+ færslurnar í þjóðskránni er ekki góðs viti að listi hafi verið upphafsstilltur á 100 færslur og bæti við 10 þegar stækka þarf listann.

Einfaldir hluti skipta líka máli :o

massi