arraylist : recherche performante - C#/.NET managed - Programmation
Marsh Posté le 26-06-2008 à 09:00:32
Je ne vois pas trop comment optimiser ça à mort. Le parcours d'un tableau est vraiment très rapide linéairement, donc bon...
Ou alors dérouler la boucle en multi-thread?
Marsh Posté le 26-06-2008 à 09:44:43
je pensais optimiser ça en limitant au maximum les copies dans des variables ou des tableaux temporaires.
la boucle multi-thread ? peux-tu m'en dire plus ?
Marsh Posté le 26-06-2008 à 13:37:56
Tu n'as qu'à poster le code que tu comptes faire, ça sera plus facile de te donner un coup de main
Marsh Posté le 26-06-2008 à 14:25:39
j'ai trouvé une autre façon de procéder, plus simple et performante.
l'objectif était parmi des informations provenant de la bdd de retrouver celle qui apparaît le plus de fois.
j'ai donc créé un hashtable. le duo key/value me permet de stocker la valeur et son nombre d'occurence. je teste simplement dans une boucle si la valeur existe dans mon hashmap, si oui frequence++ sinon, monHashmap.add(object).
ensuite, c'est très simple de récupérer ce que je souhaite.
merci quand même
Marsh Posté le 26-06-2008 à 14:48:00
mmm
Je pensais que c'était ce que tu faisais directement, et que tu demandais comment optimiser ça...
Mais si ça vient d'une BDD, une requête SQL peut faire l'affaire aussi
Marsh Posté le 26-06-2008 à 14:51:45
une requête sql qui réalise ça ?
je suis preneur ;D
je veux bien à ptit exemple simple.
Marsh Posté le 26-06-2008 à 15:09:10
ReplyMarsh Posté le 27-06-2008 à 13:41:20
Code :
|
c'est un exemple. les id recherchés avec le IN sont ajoutés dynamiquement. (ils sont dans une arraylist à la base)
Marsh Posté le 27-06-2008 à 13:55:51
Déjà, il faut éviter de faire un SELECT * au profit d'un SELECT maTable.Champ1, maTable.Champ2, etc... Ne rapatrier que ce dont tu as besoin.
Ensuite la requête que tu peux faire pour avoir le compte de tes clés.
Un truc du genre:
Code :
|
Plus d'infos sur le SQL sur cette excellent site: http://sql.developpez.com
Marsh Posté le 28-06-2008 à 08:41:05
si c'est pour stocker des nombres, n'utilise pas ArrayList mais BitVector ou BitVector32. Ils sont plus optimisé que ArrayList pour le stockage de nombre.
Marsh Posté le 25-06-2008 à 14:55:31
bonjour à tous,
je fait appel à votre aide pour un petit problème en C#.
j'ai une arraylist composée de nombres (ushort).
mon but est de créer une méthode static qui retourne le nombre qui apparaît le plus de fois.
le tableau pouvant être très gros, je cherche de l'aide pour avoir un code performant.
des idées ?
Message édité par twisted le 25-06-2008 à 14:56:03