OVH Cloud OVH Cloud

Optimisation Select Case

9 réponses
Avatar
Patrice Lamarche
Salut tout le monde,

Je voulais savoir s'il était possible d'optimisé un select case.

Voila pourquoi.

J'utilise le pattern de class factory pour instancié mes objects .. et
dans mon object creator j'ai

Select Case strobjname
Case obj1
set objectcreator = new obj1
Case obj2
set objectcreator = new obj2
Case obj3
set objectcreator = new obj3

...
Case obj99
set objectcreator = new obj99
End Select

En C++ le select case est fait a partir d'offset selon le valeur de ton
element evaluté, Si c 15 il s'en va a l'option 15 direct.

En VB lorsqu'on trace un select case, il fait tout les possibilité une à la
suite de l'autre jusqu'a temps qu'il arrive au bon case.
Si je place les classes qui sont créer le plus souvent en premier, est-ce
que ça optimiserai un peu la vitesse du case.

Cordiallement

Patrice.

9 réponses

Avatar
Patrice Lamarche
Bonjour,

je viens de faire un test avec un select case de 2000 enregistrement, et
qu'il soit au debut ou a la fin ca prends toujours le meme temps. J'en
deduis que c'est pour facilité le debuggage que VB nous fait parcourir le
case un a un

Merci

Patrice
"Patrice Lamarche" wrote in
message news:%
Salut tout le monde,

Je voulais savoir s'il était possible d'optimisé un select case.

Voila pourquoi.

J'utilise le pattern de class factory pour instancié mes objects .. et
dans mon object creator j'ai

Select Case strobjname
Case obj1
set objectcreator = new obj1
Case obj2
set objectcreator = new obj2
Case obj3
set objectcreator = new obj3

...
Case obj99
set objectcreator = new obj99
End Select

En C++ le select case est fait a partir d'offset selon le valeur de ton
element evaluté, Si c 15 il s'en va a l'option 15 direct.

En VB lorsqu'on trace un select case, il fait tout les possibilité une à


la
suite de l'autre jusqu'a temps qu'il arrive au bon case.
Si je place les classes qui sont créer le plus souvent en premier, est-ce
que ça optimiserai un peu la vitesse du case.

Cordiallement

Patrice.




Avatar
Jonathan
Met un 'Exit Sub' dans chaque Case !
Comme çà dès qu'il aura trouvé sa condition alors il quittera le programme.

@+

Jonathan
Avatar
Patrice Lamarche
pas obliger il quitte deja le select lorsque la valeur est trouvé
"Jonathan" <ANTISPAMbigbrother35@@hotmail.com> wrote in message
news:3f3cefcf$0$27018$
Met un 'Exit Sub' dans chaque Case !
Comme çà dès qu'il aura trouvé sa condition alors il quittera le


programme.

@+

Jonathan




Avatar
Zoury
Salut Pat! :O)

Case obj99
set objectcreator = new obj99



dans un autre ordre d'idée, tu pourrais tout simplement utilisé le
late-binding afin de raccourcir ton code (et sa maintenance).. (ça ne
fonctionne qu'une fois compilée.. ;O))

'***
' ObjectCreate As Object..
Set ObjectCreator = CreateObject(strLibName & "." & strObjName)
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Patrice Lamarche
Oui je peux faire ca ... mais mon exemple etait pas le bon .. j'utilise deja
le late binding c'est pour le traitement un peu différent apres la création

Cordiallement

Patrice
"Zoury" wrote in message
news:%234wS$
Salut Pat! :O)

> Case obj99
> set objectcreator = new obj99

dans un autre ordre d'idée, tu pourrais tout simplement utilisé le
late-binding afin de raccourcir ton code (et sa maintenance).. (ça ne
fonctionne qu'une fois compilée.. ;O))

'***
' ObjectCreate As Object..
Set ObjectCreator = CreateObject(strLibName & "." & strObjName)
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/




Avatar
Zoury
aaaaaaaaaaahhhhhh! :O)
Avatar
François Picalausa
"Joseph PUSZTAY" a écrit dans le message de
news:
Et c'est quoi le "late-binding", ça sert à quoi, est-ce que ça se
mange ???




Bonjour/soir,

Voir la FAQ:
http://faq.vb.free.fr/index.php?question4

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
Joseph PUSZTAY
Et c'est quoi le "late-binding", ça sert à quoi, est-ce que ça se mange ???
Faudrait voir à parler français, svp, moi rien comprendre !!!

Sinon, ben, en faisant des sous-tris, des if ou autres tous les x lignes de
code, on devrait mathématiquement gagner un peu de vitesse, ça diminuerait
au moins la lecture séquentielle...
@+, bye, Joe :o)




"Zoury" a écrit dans le message de
news:%234wS$
Salut Pat! :O)

> Case obj99
> set objectcreator = new obj99

dans un autre ordre d'idée, tu pourrais tout simplement utilisé le
late-binding afin de raccourcir ton code (et sa maintenance).. (ça ne
fonctionne qu'une fois compilée.. ;O))

'***
' ObjectCreate As Object..
Set ObjectCreator = CreateObject(strLibName & "." & strObjName)
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/




Avatar
Patrice Lamarche
Bonjour Joseph

1- Du early et late binding.

early binding = Dim obj as collection (le VB sait que c'est ca va etre
une collection et peut t'afficher les propriété)

late binding = Dim obj as object (le VB sait pas quel type d'objet ca va
ete alors il ne peut pas afficher les propriété et optimisé le code)
Dim obj = new Collection

plus d'info

http://faq.vb.free.fr/index.php?question4

....
2- Non on ne gagnerai pas de vitess en fesant des sous tris parce qu'il est
plus long faire 2 if et elseif c'Est plus lent qu'un SELECT CASE.
Je crois que le lecture séquenciel d'un select case est juste une
representation dans le mode debug parce que lors du roulement de
l'application qu'on se trouve au premier case ou au 2000eme c'est le meme
temps.

Cordiallement

Patrice
"Joseph PUSZTAY" wrote in message
news:
Et c'est quoi le "late-binding", ça sert à quoi, est-ce que ça se mange


???
Faudrait voir à parler français, svp, moi rien comprendre !!!

Sinon, ben, en faisant des sous-tris, des if ou autres tous les x lignes


de
code, on devrait mathématiquement gagner un peu de vitesse, ça diminuerait
au moins la lecture séquentielle...
@+, bye, Joe :o)




"Zoury" a écrit dans le message de
news:%234wS$
> Salut Pat! :O)
>
> > Case obj99
> > set objectcreator = new obj99
>
> dans un autre ordre d'idée, tu pourrais tout simplement utilisé le
> late-binding afin de raccourcir ton code (et sa maintenance).. (ça ne
> fonctionne qu'une fois compilée.. ;O))
>
> '***
> ' ObjectCreate As Object..
> Set ObjectCreator = CreateObject(strLibName & "." & strObjName)
> '***
>
> --
> Cordialement
> Yanick Lefebvre - MVP pour Visual Basic
> http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
> http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
>
>