Discussions au sujet des autres produits NI

cancel
Showing results for 
Search instead for 
Did you mean: 

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 Kudos
Message 1 of 11
(4,118 Views)
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 of 11
(4,070 Views)
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 Kudos
Message 3 of 11
(4,060 Views)
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 Kudos
Message 4 of 11
(4,032 Views)
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 of 11
(4,013 Views)

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 Kudos
Message 6 of 11
(4,001 Views)
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 Kudos
Message 7 of 11
(3,992 Views)


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 Kudos
Message 8 of 11
(3,984 Views)
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 Kudos
Message 9 of 11
(3,977 Views)
Le code est attaché à mon premier message de ce sujet de discussion.


Message Edité par JB le 04-07-2008 05:51 PM
0 Kudos
Message 10 of 11
(3,970 Views)