Re: Passer des arguments par référence à une fonction écrite en scilab.

binoyte binoyte at gmail.com
Sam 9 Juin 14:23:02 CEST 2012


Bonjour,
finalement j'ai trouvé une piste en 100% scilab.

Je déclare un tableau global dans lequel je stocke mes structures (mes
pseudos objets). Un tableau par type de structure.
Les fonctions qui doivent travailler sur ces structures ne reçoivent qu'un
unique argument : l'indice du tableau correspondant à la structure
concernée.
Ces fonctions commencent par :

global MonTableauDeStructure;

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 ?




Le 6 juin 2012 15:46, Samuel Gougeon-2 [via Scilab / Xcos - Mailing Lists
Archives] <ml-node+s994242n4024296h98 at n3.nabble.com> a écrit :

> Bonjour,
>
> Quand on passe un identifiant graphique en paramètre, le passage
> se fait-il par valeur ?
> S'il est possible d'adresser les handle en C (est-ce possible ?),
> pourquoi ne pas essayer de stocker les données dans un .userdata ...
> au cas où l'adressage se ferait implicitement par référence...
>
> Plus de questions que de réponses, donc...
>
> Samuel
>
>
> Le 06/06/2012 17:14, binoyte a écrit :
>
> > J'ai parcouru l'API de scilab, je ne trouve aucune trace d'une
> possibilité de
> > manipulation de variable de type structure scilab par une routine C.
> > http://help.scilab.org/docs/5.4.0-alpha-1/fr_FR/sci_types.html
> >
> > Pour rappel, j'ai plusieurs variables de type struct scilab (une «class
> > bearing» en quelque sorte) : roulement1, roulement2, ...
> >
> > avec par exemple :
> > roulement1.diametre = 3.2;
> > roulement1.materiau = 'acier';
> > roulement1.rpm = 2300;
> > roulement1.contrainte = 0;
> > ...
> >
> > J'aimerai pouvoir faire un roulement1->setContrainte() ou
> setContrainte(&
> > roulement1).
> >
> > J'ai pas mal de variables de type struct comme dans l'exemple ci-dessus
> et
> > surtout j'appelle des fonctions d'optimisation, donc mon programme fait
> pas
> > mal de boucles.
> >
> > Actuellement avec mon script 100% scilab j'ai mes 8 cœurs pris à 100% à
> > cause de passage d'arguments par valeur. Scilab créé un doublon des
> > arguments avant l'appel de la fonction, donc scilab passe son temps à
> > demander à l'OS de l'allocation mémoire puis à libérer la mémoire. Le
> temps
> > de calcul réel c'est peanuts à côté de ça.
> >
> > Comment améliorer mon temps de calcul ? Je veux bien transposer mon code
> en
> > c mais j'ai pas trop envie de laisser tomber les structures qui sont
> quand
> > même bien pratiques. J'ai pas trop envie non plus de tout passer en c
> sinon
> > il faut que j'écrive moi-même les fonctions d'optimisation. En fait il
> > manque à scilab une vraie notion d'objet. Dommage.
> >
> > Merci d'avance pour votre aide.
> >
> > --
> > View this message in context:
> http://mailinglists.scilab.org/Passer-des-arguments-par-reference-a-une-fonction-ecrite-en-scilab-tp4024279p4024293.html
> > Sent from the Liste utilisateur (en français) mailing list archive at
> Nabble.com.
> >
> > --
> > Pour vous désinscrire de cette mailing list, merci d'envoyer un mail
> vide à
> > [hidden email] <http://user/SendEmail.jtp?type=node&node=4024296&i=0>
> > Pour voir les archives de cette mailing list, allez sur
> > http://mailinglists.scilab.org/
> >
> >
> >
>
> --
> Pour vous désinscrire de cette mailing list, merci d'envoyer un mail vide
> à
> [hidden email] <http://user/SendEmail.jtp?type=node&node=4024296&i=1>
> Pour voir les archives de cette mailing list, allez sur
> http://mailinglists.scilab.org/
>
>
>
> ------------------------------
>  If you reply to this email, your message will be added to the discussion
> below:
>
> http://mailinglists.scilab.org/Passer-des-arguments-par-reference-a-une-fonction-ecrite-en-scilab-tp4024279p4024296.html
>  To unsubscribe from Passer des arguments par référence à une fonction
> écrite en scilab., click here<http://mailinglists.scilab.org/template/NamlServlet.jtp?macro=unsubscribe_by_code&node=4024279&code=Ymlub3l0ZUBnbWFpbC5jb218NDAyNDI3OXwxMTM4MTQxMDAx>
> .
> NAML<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>
>


--
View this message in context: http://mailinglists.scilab.org/Passer-des-arguments-par-reference-a-une-fonction-ecrite-en-scilab-tp4024279p4024325.html
Sent from the Liste utilisateur (en français) mailing list archive at Nabble.com.
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.scilab.org/pipermail/users-fr/attachments/20120609/db9f23fa/attachment.htm>


Plus d'informations sur la liste de diffusion users-fr