Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

question con

Bonjour,

en écrivant du Labview, je me suis retrouvé face à un dilème de cablage. Je vous fait donc part de ma question con:
Lequel des deux cablages faut il préférer ? (Cf image)

J'aurrait tendence a prendre celui du bas, mais je ne sais pas pourquoi!


Si l'un d'entre vous peut m'éclairer...

Merci,
Nico
0 Compliments
Message 1 sur 11
4 119 Visites
Salut Nico,

Je ne comprends pas bien à quoi te sert la boucle for. En effet, il faudrait soit que tu aies un tableau en entrée de ta boucle soit lui dire de le faire N fois. Etant donné qu'il n'y a ni tableau ni instruction, elle te sert à rien cette boucle for. De plus je pense que tu ne pouvait pas executé ton VI. Enlève la et ca marchera.

Thomas
Message 2 sur 11
4 071 Visites
Fondamentalement, la solution du haut est la meilleure. Tu ne viens lire la constante qu'une seule fois, ce qui fait gagne du temps d'execution à ta boucle.

Une règle simple, si possible, toujours sortir les constantes des boucles dans LabVIEW!

Sinon, même remarque que thomas. Tel que tu le montre sur ton image, ton VI ne peut s'exécuter car tu n'as pas codé d'indication sur le nombre d'itérations de ta boucle (soit une constante sur N soit un tableau en entrée).

A+

Raoul Chodziesner-Bonne
Ingénieur Instrumentation
CRIL TECHNOLOGY - Groupe ALYOTECH

"Celui qui pose une question peut paraitre idiot sur le moment, celui qui n'en pose pas le reste toute sa vie!"
0 Compliments
Message 3 sur 11
4 061 Visites
Fondamentalement, la solution du haut est la meilleure. Tu ne viens lire la constante qu'une seule fois, ce qui fait gagne du temps d'execution à ta boucle.

Une règle simple, si possible, toujours sortir les constantes des boucles dans LabVIEW!


C'est la réponse que je cherchai a avoir. Merci CBRaoul. Effectivement, ma boucle n'a pas de sens telle qu'elle est, mais je ne souhaitai pas réaliser une belle boucle, mais juste savoir s'il fallait mieu que la constante soir à l'interrieur ou à l'exterieur.

Merci encore,
Nicko


Message Edité par Révolution le 04-07-2008 02:17 PM
0 Compliments
Message 4 sur 11
4 033 Visites
Mon sentiment que l'emplacement des constantes à l'intérieur ou à l'extérieur de la boucle n'a pas d'influence sur le temps d'exécution a été confirmé par l'exemple joint.
Le compilateur de LV8.5 semble en effet suffisamment optimisé pour déterminer qu'il s'agit de constantes et ne pas relire celles-ci à chaque itération de la boucle.
Il serait intéressant de vérifier ce résultat avec des versions antérieures de LabVIEW.

Quoi qu'il en soit, je vais conserver mon style de programmation qui consiste à placer les constantes à l'extérieur de la boucle.




Message Edité par JB le 04-07-2008 04:05 PM
Message 5 sur 11
4 014 Visites

Bonjour,
J'ai effectué le benchmark avec LabVIEW 8.0 et il y a une différence:

·         constante à l'extérieur de la boucle -> 372 ms

·         constante dans la boucle -> 530 ms

Je suppose qu’avec des versions antérieures cela se confirme.

Conclusion : il vaut mieux placer les constante à l’extérieur des boucle afin d’optimiser son code LabVIEW.

    Benjamin R.


Senior LabVIEW Developer @Neosoft


0 Compliments
Message 6 sur 11
4 002 Visites
Juste pour clore la discussion, je n'ai fait que citer les cours officiels de NI sur LabVIEW au sujet de la constante. Tant mieux, si maintenant la différence de perf est nulle. Je me suis borné à répondre à la question d'après ce que j'ai appris...

A+

Raoul Chodziesner-Bonne
Ingénieur Instrumentation
CRIL TECHNOLOGY - Groupe ALYOTECH

"Celui qui pose une question peut paraitre idiot sur le moment, celui qui n'en pose pas le reste toute sa vie!"
0 Compliments
Message 7 sur 11
3 993 Visites


BenjaminR a écrit:

Bonjour,
J'ai effectué le benchmark avec LabVIEW 8.0 et il y a une différence:

·         constante à l'extérieur de la boucle -> 372 ms

·         constante dans la boucle -> 530 ms

Je suppose qu’avec des versions antérieures cela se confirme.

Conclusion : il vaut mieux placer les constante à l’extérieur des boucle afin d’optimiser son code LabVIEW.




Merci Benjamin pour ces indications intéressantes ! Nous nous coucherons ainsi un peu plus malins ce soir... et continuerons à appliquer nos bonnes habitudes de programmation même si leur effet semble dans ce cas avoir disparu avec LV8.5.
0 Compliments
Message 8 sur 11
3 985 Visites
Bonjour,

Vous avez le code du benchmark à nous fournir ? La différence me semble tout juste croyable.
Il ne s'agit en effet que de l'allocation d'un scalaire (ou pas en fonction du diagramme que l'on retient) !

Je vais tester ça de mon côté aussi.

Edit: à mon goût, et pour répondre à la question initiale, je dirai que c'est surtout une question de lisibilité. Pas besoin - selon moi - de mettre dans la boucle une constante, puisque par définition, elle ne varie pas d'un coup à l'autre de la boucle. Après, la question ne serait pas la même si on avait un tableau constant de 100 000 points. Pour un scalaire, au final, ça ne doit pas changer grand chose - à confirmer donc

Cordialement.


Message Edité par Mathieu Steiner le 04-07-2008 05:47 PM
0 Compliments
Message 9 sur 11
3 978 Visites
Le code est attaché à mon premier message de ce sujet de discussion.


Message Edité par JB le 04-07-2008 05:51 PM
0 Compliments
Message 10 sur 11
3 971 Visites