OVH Cloud OVH Cloud

quel code plus rapide

3 réponses
Avatar
R Vuille
Bonsoir,
Quel est la manière de faire ou interpété le code qui est plus rapide sur
cet exemple ?

Si instruction Fin comme ci-dessous ou sur une seule ligne

SI ..... OU ..... OU ..... OU etc...... Alors
Info("4 caractères de suite pas autorisés")
RETOUR

Ou comme le code ici


BOUCLE
t=t+1
SI Lromain[[t A t+3]] = "MMMM" ALORS
Info("4 caractères de suite pas autorisés")
RETOUR
FIN
SI Lromain[[t A t+3]] = "CCCC" ALORS
Info("4 caractères de suite pas autorisés")
RETOUR
FIN
SI Lromain[[t A t+3]] = "XXXX" ALORS
Info("4 caractères de suite pas autorisés")
RETOUR
FIN
....
.....
.....
etc......

En passant je suis au final en train de tester le code Romain - Arabe :-)

--
Merci et bonnes salutations
Visitez www.saphirw.ch et donner vos impressions et idées

3 réponses

Avatar
Pascal H
Le mer. 02 juil. 2003 19:15:16, dans le message
news:bdv3vb$1046mo$, "R Vuille"
a écrit :

Quel est la manière de faire ou interpété le code qui est plus
rapide sur cet exemple ?




Bonsoir,

Pour ma part j'opterais pour l'utilisation de ChaineOccurrence() ou
Position() et une addition des valeurs retournées par ces fonctions.

Ce qui donnerait un code du genre:

Si position(Lromain, "XXXX") + position(Lromain,"CCCC") ...
+ position(Lromain,"MMMM") (etc) > 0 alors
// la condition n'est pas respectée
Fin

Par contre en terme de performance je ne sais pas quel code sera
interprété le plus rapidement :(
En fait je pense que si ta chaîne est longue, la parcourir élément par
élément n'est pas judicieux.

De plus quand tu écrits
<<
SI Lromain[[t A t+3]] = "MMMM" ALORS
Info("4 caractères de suite pas autorisés")
RETOUR
FIN





tu ne gères pas le cas des 3 derniers caractères de la chaîne (t+3 ->
indice hors limite) ou d'une chaîne de 3 caractères.

--
Pascal Héraud
Avatar
R Vuille
Bonsoir
Non je ne gère pas car autorisé
MMMCCCXXXIII c'est autorisé

Le programme est téléchargeable sur mon site :-)
Pour un débutant avec 1 vingtaine d'heures en Windev ! Quelque adaptations
de confort et des messages d'erreurs + éventullement une aide "explication"
du système romain viendront pour la prochaine mouture...........
J'aimerais un commentaire

www.rmvuille.ch bouton ENTREE ensuite dans le menu Windev !


--
Merci et bonnes salutations
Visitez www.saphirw.ch et donner vos impressions et idées
"Pascal H" a écrit dans le message de
news:
Le mer. 02 juil. 2003 19:15:16, dans le message
news:bdv3vb$1046mo$, "R Vuille"
a écrit :

> Quel est la manière de faire ou interpété le code qui est plus
> rapide sur cet exemple ?
>

Bonsoir,

Pour ma part j'opterais pour l'utilisation de ChaineOccurrence() ou
Position() et une addition des valeurs retournées par ces fonctions.



Avatar
Fabrice Burghgraeve
bonjour.

"R Vuille" a écrit dans le message de
news:bdv3vb$1046mo$
Bonsoir,
Quel est la manière de faire ou interpété le code qui est plus rapide sur
cet exemple ?

Si instruction Fin comme ci-dessous ou sur une seule ligne

SI ..... OU ..... OU ..... OU etc...... Alors
Info("4 caractères de suite pas autorisés")
RETOUR

Ou comme le code ici




Il me semble que windev n'est pas bien optimise pour cela, et qu'il va
evaluer toutes les conditions du OU, meme si la premiere est vraie.

Donc le deuxieme code serait plus rapide.
Cela dit, les codes reviennent aux meme dans le cas ou toutes les conditions
sont fausses
c'est a dire si il n'y a pas d'erreur de saisie
et comme en cas d'erreur, il y a un "info" qui va bloquer le programme.....

Je dirais que les deux se valent dans ce cas particulier, mais dans un cas
plus general, la deuxieme forme d'ecriture est meilleure en terme de
performance...

Mais le mieux pour ce cas la, c'est encore l'ecriture de Pascal avec les
"position" plutot que les boucles : plus court et plus lisible.



BOUCLE
t=t+1
SI Lromain[[t A t+3]] = "MMMM" ALORS
Info("4 caractères de suite pas autorisés")
RETOUR
FIN
SI Lromain[[t A t+3]] = "CCCC" ALORS
Info("4 caractères de suite pas autorisés")
RETOUR
FIN
SI Lromain[[t A t+3]] = "XXXX" ALORS
Info("4 caractères de suite pas autorisés")
RETOUR
FIN
....


(...)

--
Fabrice Burghgraeve
Computer & Services

(enlevez le _pas_de_spam_ pour me répondre en privé)