Optimisation !

cs_jmtoulon Messages postés 85 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 3 août 2010 - 11 févr. 2006 à 14:02
cs_jmtoulon Messages postés 85 Date d'inscription dimanche 1 avril 2001 Statut Membre Derniè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 :)

8 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
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.

_
Avant de poster dans le forum,
Prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
0
cs_jmtoulon Messages postés 85 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 3 août 2010
11 févr. 2006 à 14:19
Merci ;)
0
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
11 févr. 2006 à 17:23
Ntdll.dll peut faire beaucoup plus rapide, j'ai déjà mis ici:
http://www.vbfrance.com/forum.v2.aspx?id=610807

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
cs_jmtoulon Messages postés 85 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 3 août 2010
11 févr. 2006 à 19:58
Slt merci pour ta réponse : J'essais de faire

tt = RtlCompareMemory(Matrix(lngI).Num(0).vBit(0), Number1.vBit(0), 4)
tq = RtlCompareMemory(Matrix(lngI).Num(1).vBit(0), Number2.vBit(0), 4)

Mais tt et qt me renvoie 4 losque il devrai au moint avoir 1 variable <> 4

As tu une solution ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21041 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 19
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.

ciao...
http://dev.winsysdev.com
BruNews, MVP VC++
0
cs_jmtoulon Messages postés 85 Date d'inscription dimanche 1 avril 2001 Statut Membre Derniè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

Lol domm
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
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).

_
Avant de poster dans le forum,
Prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
0
cs_jmtoulon Messages postés 85 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 3 août 2010
11 févr. 2006 à 21:03
Merci pour ton aide :) je vais pouvoir poster ma source aujourd'hui :m)
0