Bonjour,<br>finalement j'ai trouvé une piste en 100% scilab.<br><br>Je déclare un tableau global dans lequel je stocke mes structures (mes pseudos objets). Un tableau par type de structure.<br>Les fonctions qui doivent travailler sur ces structures ne reçoivent qu'un unique argument : l'indice du tableau correspondant à la structure concernée.<br>
Ces fonctions commencent par :<br><br><span style="font-family:courier new,monospace;color:rgb(51,51,153)">global MonTableauDeStructure;</span><br><br>Donc, en toute logique, comme il n'y a plus de passage d'argument, ces tableaux globaux (et donc mes structures) ne sont plus dupliqués avant l'appel des fonctions. Ce que je ne comprends pas, c'est que le programme est 10 fois plus long qu'avant ?<br>
<br><br><br><br><div class="gmail_quote">Le 6 juin 2012 15:46, Samuel Gougeon-2 [via Scilab / Xcos - Mailing Lists Archives] <span dir="ltr"><<a href="/user/SendEmail.jtp?type=node&node=4024325&i=0" target="_top" rel="nofollow" link="external">[hidden email]</a>></span> a écrit :<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Bonjour,
<br><br>Quand on passe un identifiant graphique en paramètre, le passage
<br>se fait-il par valeur ?
<br>S'il est possible d'adresser les handle en C (est-ce possible ?),
<br>pourquoi ne pas essayer de stocker les données dans un .userdata ...
<br>au cas où l'adressage se ferait implicitement par référence...
<br><br>Plus de questions que de réponses, donc...
<br><br>Samuel
<br><br><br>Le 06/06/2012 17:14, binoyte a écrit :
<div><div><div class="h5"><div class='shrinkable-quote'><br>> J'ai parcouru l'API de scilab, je ne trouve aucune trace d'une possibilité de
<br>> manipulation de variable de type structure scilab par une routine C.
<br>> <a href="http://help.scilab.org/docs/5.4.0-alpha-1/fr_FR/sci_types.html" rel="nofollow" link="external" target="_blank">http://help.scilab.org/docs/5.4.0-alpha-1/fr_FR/sci_types.html</a><br>>
<br>> Pour rappel, j'ai plusieurs variables de type struct scilab (une «class
<br>> bearing» en quelque sorte) : roulement1, roulement2, ...
<br>>
<br>> avec par exemple :
<br>> roulement1.diametre = 3.2;
<br>> roulement1.materiau = 'acier';
<br>> roulement1.rpm = 2300;
<br>> roulement1.contrainte = 0;
<br>> ...
<br>>
<br>> J'aimerai pouvoir faire un roulement1->setContrainte() ou setContrainte(&
<br>> roulement1).
<br>>
<br>> J'ai pas mal de variables de type struct comme dans l'exemple ci-dessus et
<br>> surtout j'appelle des fonctions d'optimisation, donc mon programme fait pas
<br>> mal de boucles.
<br>>
<br>> Actuellement avec mon script 100% scilab j'ai mes 8 cœurs pris à 100% à
<br>> cause de passage d'arguments par valeur. Scilab créé un doublon des
<br>> arguments avant l'appel de la fonction, donc scilab passe son temps à
<br>> demander à l'OS de l'allocation mémoire puis à libérer la mémoire. Le temps
<br>> de calcul réel c'est peanuts à côté de ça.
<br>>
<br>> Comment améliorer mon temps de calcul ? Je veux bien transposer mon code en
<br>> c mais j'ai pas trop envie de laisser tomber les structures qui sont quand
<br>> même bien pratiques. J'ai pas trop envie non plus de tout passer en c sinon
<br>> il faut que j'écrive moi-même les fonctions d'optimisation. En fait il
<br>> manque à scilab une vraie notion d'objet. Dommage.
<br>>
<br>> Merci d'avance pour votre aide.
<br>>
</div></div></div><div class="im">> --
<br>> View this message in context: <a href="http://mailinglists.scilab.org/Passer-des-arguments-par-reference-a-une-fonction-ecrite-en-scilab-tp4024279p4024293.html" rel="nofollow" link="external" target="_blank">http://mailinglists.scilab.org/Passer-des-arguments-par-reference-a-une-fonction-ecrite-en-scilab-tp4024279p4024293.html</a><br>
> Sent from the Liste utilisateur (en français) mailing list archive at Nabble.com.
<br>>
<br>> --
<br>> Pour vous désinscrire de cette mailing list, merci d'envoyer un mail vide à
<br>> <a href="http://user/SendEmail.jtp?type=node&node=4024296&i=0" rel="nofollow" link="external" target="_blank">[hidden email]</a>
<br>> Pour voir les archives de cette mailing list, allez sur
<br>> <a href="http://mailinglists.scilab.org/" rel="nofollow" link="external" target="_blank">http://mailinglists.scilab.org/</a><br>>
<br>>
<br>>
</div></div><div class="im"><br>--
<br>Pour vous désinscrire de cette mailing list, merci d'envoyer un mail vide à
<br><a href="http://user/SendEmail.jtp?type=node&node=4024296&i=1" rel="nofollow" link="external" target="_blank">[hidden email]</a>
<br>Pour voir les archives de cette mailing list, allez sur
<br><a href="http://mailinglists.scilab.org/" rel="nofollow" link="external" target="_blank">http://mailinglists.scilab.org/</a><br><br>
<br>
<br>
</div><hr color="#cccccc" noshade size="1">
<div style="color:#444;font:12px tahoma,geneva,helvetica,arial,sans-serif"><div class="im">
<div style="font-weight:bold">If you reply to this email, your message will be added to the discussion below:</div>
</div><a href="http://mailinglists.scilab.org/Passer-des-arguments-par-reference-a-une-fonction-ecrite-en-scilab-tp4024279p4024296.html" target="_blank" rel="nofollow" link="external">http://mailinglists.scilab.org/Passer-des-arguments-par-reference-a-une-fonction-ecrite-en-scilab-tp4024279p4024296.html</a>
</div><div class="HOEnZb"><div class="h5">
<div style="color:#666;font:11px tahoma,geneva,helvetica,arial,sans-serif;margin-top:.4em;line-height:1.5em">
To unsubscribe from Passer des arguments par référence à une fonction écrite en scilab., <a href="" target="_blank" rel="nofollow" link="external">click here</a>.<br>
<a href="http://mailinglists.scilab.org/template/NamlServlet.jtp?macro=macro_viewer&id=instant_html%21nabble%3Aemail.naml&base=nabble.naml.namespaces.BasicNamespace-nabble.view.web.template.NabbleNamespace-nabble.view.web.template.NodeNamespace&breadcrumbs=notify_subscribers%21nabble%3Aemail.naml-instant_emails%21nabble%3Aemail.naml-send_instant_email%21nabble%3Aemail.naml" rel="nofollow" style="font:9px serif" target="_blank" link="external">NAML</a>
</div></div></div></blockquote></div><br>
<br/><hr align="left" width="300" />
View this message in context: <a href="http://mailinglists.scilab.org/Passer-des-arguments-par-reference-a-une-fonction-ecrite-en-scilab-tp4024279p4024325.html">Re: Passer des arguments par référence à une fonction écrite en scilab.</a><br/>
Sent from the <a href="http://mailinglists.scilab.org/Liste-utilisateur-en-francais-f3344097.html">Liste utilisateur (en français) mailing list archive</a> at Nabble.com.<br/>