2010-12-08 45 views
1

J'écris une classe J2ME qui lit les clés variables et le contenu d'un fichier de ressources (sous forme de chaînes). Je voudrais stocker ces données dans quelque chose comme un HashTable pour un accès plus rapide, de sorte que l'application n'aura pas à lire le fichier chaque fois qu'on lui demande la valeur d'une clé. Si je préfère utiliser la fonction interne java.util.Hashtable ou serait-il plus rapide ou plus efficace de la mémoire pour rechercher la chaîne clé chaque fois (par exemple avec foo.indexOf("bar") dans la chaîne qui a été lu à partir du fichier?HashTable efficiency in J2ME

+1

être plus rapide ou plus efficace en mémoire "Vous ne pouvez pas avoir les deux. HashTable est plus rapide. TreeMap sera plus efficace en mémoire. –

+0

Pour sa défense, il a utilisé "ou" et non "et". Pour l'OP, n'oubliez pas d'optimiser la lisibilité avant tout le reste ... Je suis sûr que nous connaissons tous la méchanceté qui est l'optimisation prématurée. – Quaternion

+0

@ S.Lott: en fait, la plupart du temps c'est Hashtable/HashMap qui est plus efficace en mémoire (ou plutôt, moins inefficace en mémoire). Ces noeuds d'arbre ont une grosse surcharge. –

Répondre

2

Hashtable est conçu pour les recherches efficaces basé sur des clés arbitraires Oui, il vaudra peut-être mieux que chercher une chaîne pour la clé à chaque fois

Mais comme pour toutes les questions liées à la performance, la meilleure réponse est de de l'évaluer vous-même. Cela ne vaut pas la comparaison, ce n'est pas une optimisation qui vaut la peine d'être faite

+1

C'est vrai . Cependant, sachez que de nombreuses implémentations JavaME utilisent une implémentation native pouvant varier d'un téléphone à l'autre (même provenant du même fournisseur), ce qui peut entraîner des performances différentes. –