J'utilise Java et je recherche des collections de chaînes (ensembles et listes) optimisées dans l'espace et sont rapides. Mes cordes sont de taille fixe: 3 ou 5 caractères longs. p>
S'il vous plaît suggérer à moi s'il y a des bibliothèques de collecte disponibles qui peuvent être le mieux adaptées à moi. Je pensais à des collections basées sur le dictionnaire. P>
Merci. P>
5 Réponses :
En supposant que vous parlez de C ou C ++, car je ne peux imaginer aucune autre langue où quelqu'un chercherait une bibliothèque de cordes, je conseillerais d'utiliser BString par Paul Hsieh . P >
Bien que je ne l'ai jamais utilisé moi-même, parce que cela n'a tout simplement pas travaillé dans mon cas, je l'ai adapté à ma propre usage en 2007 en prenant ses concepts comme base. C'est très bien documenté et tout au moins, vous pouvez apprendre une grosse affaire sur les chaînes qui allient simplement à ces liens et à lire sur le matériel de Paul. P>
Si je voulais une vitesse, j'utiliserais C ++ et la STL et une classe de cordes personnalisée fixée à 8 octets. 8 octets est joliment aligné et 64 bits peuvent donc être comparés dans une seule instruction de la machine. P>
Utilisation de la STL Vous pouvez choisir d'utiliser un STD :: Set, une STD :: Plan, un ONGURED_SET, une liste STD :: Liste ou une autre structure compatible STL. P>
Bonjour, je cherche à optimiser le code Java. L'application utilise beaucoup de collections de chaîne et mes chaînes sont de tailles fixes
@niraj: Vous n'avez pas dit cela dans votre question. Je vais éditer votre question pour vous, mais vous devez indiquer quelles langues et quelles plateformes vous posez sur vos questions.
'Collections basées sur le dictionnaire'? HashMap est un choix par défaut. C'est aussi vite que o (1). Et il n'a rien avec la taille de l'élément fixe ou non. P>
Si vous voulez dire une collection de chaînes, j'irais avec les mais, veuillez tester votre code avec Hashset code> code>. Si vous avez besoin de quelque chose encore plus rapide (en termes de temps de recherche), vous pouvez utiliser un Trie . Les essais donnent une recherche très rapide (o (longueur de chaîne)) indépendamment du nombre de chaînes de la structure de données et peuvent être très compacts. p>
hashset code> d'abord. Avec plusieurs millions de cordes de petite taille, je n'imagine pas que ce serait très lent. P>
Vous ne pouvez pas vraiment avoir une "collection rapide" en général, car chaque source de données a sa propre force et sa faiblesse. p>
Si vous voulez une addition rapide et une itération, Si vous avez un accès simultané, il existe également d'autres données de données potentiellement mieux adaptées. Combinant parfois plus d'une source de données pourrait également aider. p>
En bref, vous devez nous dire pour ce que vous allez utiliser votre DaSTRUCTURE. P> ArrayList code> s sont bons. Si vous faites beaucoup de suppression, vous voudrez peut-être utiliser
linkedlist code> s. Si vous voulez des looks rapides,
hashset code> s est bon, etc. p>
Quelle langue / plateforme?
Combien de chaînes avez-vous, grossièrement? Milliers? Des millions? Des milliards?