draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010
-
31 déc. 2007 à 17:06
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
19 févr. 2008 à 21:34
Salut a tous,
J'ai un petit soucis de perf pour tester l'existance d'un SubItem dans une listview.
En fait j'ai une fonction AddLvItem a qui j'envoie le text de l'item et le text du subItem a ajouter,
celle-ci verifie que le subItem n'existe pas deja et l'ajoute dans la listview.
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 31 déc. 2007 à 18:31
RtlFillMemory(&lvItem, sizeof(LVITEMA), 0);
RtlFillMemory(RetChar, 5, 0);
C'est hors boucle mais quand même je ne vois pas pourquoi faire des appels externes pour si peu.
RtlFillMemory > memset est inliné par compilo.
Si sans CRT:
DWORD *pdw;
pdw = (DWORD*) &lvItem;
count = sizeof(LVITEM) / 4;
do {
*pdw++ = 0;
} while(--count);
char RetChar[8]; // multiple de 4 pour alignement des données
*((DWORD*) RetChar) = 0;
*((DWORD*) (RetChar + 4)) = 0; // mis à 0 en 2 cycles maxi sans boucle
Beaucoup plus crucial car dans la boucle:
if(RtlCompareMemory(chSubItem, RetChar, 4)==4) return;
deviendra:
if( *((DWORD*) RetChar) == *((DWORD*) chSubItem) ) return;
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 31 déc. 2007 à 17:35
re,
eh en fait apres avoir regardé je vois pas trop comment l'utiliser...
Il ne permet pas de recuperer un index depuis une chaine, donc a moins de l'appeler jusqu'a ce qu'il retourne -1 et faire chaque fois un GETITEMTEXT je vois pas trop :(
Si non y a aussi le message LVM_FINDITEM mais apparement ne fonctionne que pour les "items" et pas pour les "subitems :(
++
Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...
Vous n’avez pas trouvé la réponse que vous recherchez ?
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 1 janv. 2008 à 15:26
re,
Eh oui c'est clair que les appels a memset ne sont pas tres justifié mais c'etait dans par simplicité un premier temps.
Sinon bien que je suis sure que tes modifs me font gagner pas mal de cycles, mon probleme de perfs reste le meme...
Il vaut mieux que je stok les valeurs dans un tableau et lister ce tableau au lieu de la listview pour savoir si le subitem existe deja...
Encore merci pour tes reponses et tes quelques lignes de codes dans les quels j'en apprends un peu plus chaque fois!
Quand on pose une question on est con 5 minutes,
Quand on ne la pose pas on le reste toute sa vie...