cs_jmtoulon
Messages postés85Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 3 août 2010
-
11 févr. 2006 à 14:02
cs_jmtoulon
Messages postés85Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 3 août 2010
-
11 févr. 2006 à 21:03
Bonjour, je voudrais transformer cette expresion :
If (Matrix(lngI).Num(0).vBit(0) =Number1.vBit(0) And _
Matrix(lngI).Num(0).vBit(1) =Number1.vBit(1) And _
Matrix(lngI).Num(0).vBit(2) =Number1.vBit(2) And _
Matrix(lngI).Num(0).vBit(3) =Number1.vBit(3)) Then
End If
En :
If (Matrix(lngI).Num(0).vBit =Number1.vBit) Then
End If
Seulement Vb n'en veux pas sans doute pks vBit est un tableau, si qq à une optimisation à me proposer je suis preneur :)
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 11 févr. 2006 à 14:11
Salut,
En effet, VB ne sais pas comparer un tableau avec un autre tableau.
Donc tu n'a guère d'autre choix que de tester tout les éléments du
tableaux, que ca soit dans une boucle for ou pas.
BruNews
Messages postés21041Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 11 févr. 2006 à 20:24
tt = RtlCompareMemory(Matrix(lngI).Num(0).vBit(0), Number1.vBit(0), 4)
J'espère que tu passes les bons params:
Ton 4 doit être le nbr d'octets à comparer.
tt indique au retour le nbr d'octets identiques, donc si tt vaut le même nbr que param en entrée alors c'est identique.
cs_jmtoulon
Messages postés85Date d'inscriptiondimanche 1 avril 2001StatutMembreDernière intervention 3 août 2010 11 févr. 2006 à 20:34
ha okay :) ça marche, mais alors il y a un probleme de performence, car
s je lance une simulation sur une boucle de 1000, RtlCompareMemory est plus lent que si je fesait
If (Matrix(lngI).Num(0).vBit(0) =Number1.vBit(0) And _
Matrix(lngI).Num(0).vBit(1) =Number1.vBit(1) And _
Matrix(lngI).Num(0).vBit(2) =Number1.vBit(2) And _
Matrix(lngI).Num(0).vBit(3) =Number1.vBit(3)) Then
End If
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013129 11 févr. 2006 à 20:44
Il faut savoir qu'un appel à une fonction de l'API Windows est plus
long qu'un appel à une fonction standard de VB : étant donné que la
fonction n'est pas compilée avec le programme, l'appel est forcément
plus coûteux.
Ici, vu qu'il ne s'agit que de tester si un tableau est égal à un
autre, je pense que VB sera plus rapide jusqu'à une certaine taille du
tableau (sur 10000 ou 100000 lignes dans ton tableau, je pense que la
fonction de l'API ira bien plus vite par exemple).