Wydajnosc w stosowaniu Hashtable a wlasnej klasy

0

Pisze aplikacje na J2ME. Mam tam do dyspozycji klase Hashtable ktora wygodnie nadaje sie do moich potrzeb. Moim celem jest zapamietanie danych z XML ktory ma duzo tagow typu:

<nazwatagu atrybut1="wartosc1" atrybut2="wartosc2" atrybut3="wartosc3" ..... />

Do tej pory pamietalem dane na zasadzie wstawiania nowych danych
klucz=>wartosc

w typ przypadku

atrybut1=>wartosc1

do tablicy Hashtable, i kazdy z tych tagow mial swoja tablice Hashtable. Niestety ilosc tych tagow przekroczyla grubo ponad 100 i pamiec operacyjna na tym cierpi a ja razem z nia :) slyszalem ze Hashtable to b. niewydajny typ danych i zastanawiam sie powaznie nad przejsciem na wlasna klase ktora ma powiedzmy 30 skladowych typu String oraz mase setterow i getterow, ale jezeli to moze byc wydajniejsze to jestem gotowy. Pytanie do Was czy nie napisze sie na marne i czy odczuje roznice w zajeciu pamieci operacyjnej po tej migracji?

z gory dzieki za odpowiedz

0

spróbuj HashMap-y
HashMap<String, HashMap<String, String>

pozdr.

0

Hashmap w j2me w MIDP 2.0?

0

mogles nie wiedziec bo nie zaznaczylem CLDC 1.0 MIDP 2.0

a z moich dwoch sposob ktore byloby wydajniejsze jak sadzicie

0

może http://www.j2mepolish.org/javadoc/j2me/de/enough/polish/util/HashMap.html
piszą "this implementation is not synchronized and faster."

0

o nie, wyglada na to ze HashMap jest we frameworku J2ME Polish :| to juz odpada, chociaz wierze w jej wydajnosc

tylko czy przejscie na wlasna klase jest wydajniejsze niz Hashtable...?
albo lepszy pomysl?

0

Mało kto potrafi pisać wydajniej niż twórcy bibliotek, które znalazły się w standardzie. Z drugiej strony Hashtable była podobno napisana niezbyt efektywnie.
Sprawdź w źródłach czy szukanie kubełka (bucket) odbywa się za pomocą operacji modulo (%) czy za pomocą maskowania bitów (&) oraz czy liczba kubełków w Hashtable ustawiana jest jako liczba pierwsza czy jako potęga dwójki. Jeżeli zostało użyte modulo i liczby pierwsze, to możesz zrobić to efektywniej za pomocą maskowania bitów. Jeżeli nie, to zysk na wydajności będzie żaden lub minimalny, a możesz nawet napisać swoją klasę wyraźnie mniej efektywnie. Ostatecznym sprawdzeniem jest napisanie krótkiego testu lub użycie profilera. Nie potrzeba zgadywać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1