J'ai besoin d'un algorithme pour stocker une paire clé/valeur, où la clé est un Int64. J'utilise actuellement une IntList triée (identique à une TStringList, mais stocke des int64). Cela me donne O (log n) pour les opérations de recherche, d'insertion et de suppression. Comme je n'ai jamais besoin d'articles triés, c'est un peu inefficace. J'ai besoin d'une sorte de hashtable pour les opérations O (1). Le problème est que la plupart des implémentations que je peux trouver supposent que la clé est une chaîne. Maintenant, je pourrais évidemment convertir la clé Int64 en une chaîne, mais cela semble inutile. Des idées?Meilleur Algorithme pour paire clé/valeur où la clé est un int64 dans Delphi, pré Delphi 2009?
Je ne connais pas le nombre d'éléments avant qu'ils ne soient entrés dans la structure de données. Je dois également ajouter que j'ai implémenté le même composant dans .net, en utilisant Dictionary, et qu'il ajoute les éléments qui sont tellement plus rapides dans la version .net. Une fois la structure de données configurée, les parcours et les récupérations ne sont pas si mauvais en comparaison, mais c'est l'insertion qui me tue.
Ce que j'ai fait est implémenté la même chose dans Delphi Prism/Oxygene. J'ai utilisé le dictionnaire, et c'est l'insertion qui est tellement plus rapide dans cette version. –
Steve
Je suis d'accord pour dire que c'est "beaucoup" plus rapide mais à quel point votre application est-elle plus rapide? Même si vous augmentez la vitesse d'insertion de 1000 fois, si l'insertion non optimisée n'a utilisé que 1% du temps CPU total, vous n'avez rien gagné. –