Rechercher
Résultats par :
Recherche avancée
Qui est en ligne ?
Il y a en tout 2 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 2 Invités

Aucun

Voir toute la liste


Partagez
Voir le sujet précédentAller en basVoir le sujet suivant
Senior Member
Messages : 497
Date d'inscription : 2008-09-21
Voir le profil de l'utilisateur

accroître la vitesse des casiers

le Mon 27 May - 21:11
Il serait bien, si possible, d'accroître la vitesse en lecture-écriture des acteurs casiers (non persistant). Car dès que la taille des casiers dépasse quelque milliers d'items, toutes modifications de la valeur d'un élément devient très lente.
avatar
Site Admin
Messages : 1039
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: accroître la vitesse des casiers

le Tue 28 May - 9:29
C'est noté.
quand tu parles de modification de la valeur, tu parles bien de la modification d'un acteur dans un tableau et non l'ajout ou la suppression d'un élément dans un casier ?
avatar
Site Admin
Messages : 1039
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: accroître la vitesse des casiers

le Tue 28 May - 10:48
Combien d'éléments as-tu dans ton tableau ?
J'ai essayé cet exemple, il n'est pas instantané mais reste rapide :
[php]
principale :
a est un casier de nombres
début
pour chaque 100000, ajoute joker dans a
pour chaque 100000, a{joker} vaut 1000-joker
[/php]
Senior Member
Messages : 497
Date d'inscription : 2008-09-21
Voir le profil de l'utilisateur

RE: accroître la vitesse des casiers

le Tue 28 May - 12:39
Point question d'ajout ou de suppression, juste une modification de la valeur, voici le code que j'utilise :

(le casier num (non persistant) est crée à partir un casier persistant avec l'instruction num=#snum
num contient 500 000 items nombre).

cls1 :
Rôles :
v & i est un nombre
Actions :
affiche "cls1"
v=#num{2002}
Pour i de 140000 à 259999 ,lis
num{i}=#v
ferme
affiche i
avatar
Site Admin
Messages : 1039
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: accroître la vitesse des casiers

le Tue 28 May - 13:40
Je pense voir d'où vient le problème (subtile..)

Dans cette exemple :
[php]
démonstration :
les grands rôles :
num est un casier de nombres vide

principale :
rôles :
v & i est un nombre
actions :
pour chaque 500000, ajoute joker dans num
v vaut #num{2002}
Pour i de 140000 à 259999, lis
num{i} vaut #v
ferme
[/php]

Tu vas cloner tout le tableau "num" lors de chaque boucle.

Pour corriger ça, il faut mettre :
v vaut #(num{2002})

Et obtenir ainsi :
[php]
démonstration :
les grands rôles :
num est un casier de nombres vide

principale :
rôles :
v & i est un nombre
actions :
pour chaque 500000, ajoute joker dans num
v vaut #(num{2002})
Pour i de 140000 à 259999, lis
num{i} vaut #v
ferme
[/php]
avatar
Site Admin
Messages : 1039
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: accroître la vitesse des casiers

le Tue 28 May - 13:43
La version 2.1 a ajouté la fonction nommée "clone" qui effectue le même travail que le symbole #.

[php]
démonstration :
les grands rôles :
num est un casier de nombres vide

principale :
rôles :
v & i est un nombre
actions :
pour chaque 500000, ajoute joker dans num
v vaut clone(num{2002})
Pour i de 140000 à 259999, lis
num{i} vaut clone(v)
ferme
[/php]

ça permet de rendre le code plus simple à comprendre ?
Senior Member
Messages : 497
Date d'inscription : 2008-09-21
Voir le profil de l'utilisateur

RE: accroître la vitesse des casiers

le Tue 28 May - 20:31
Je ne comprends pas bien la différence entre #(num{2002}) et #num{2002} mais soit !
avatar
Site Admin
Messages : 1039
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: accroître la vitesse des casiers

le Tue 28 May - 20:57
pat a écrit:
Je ne comprends pas bien la différence entre #(num{2002}) et #num{2002} mais soit !

#num{2002}
Tu clones le tableau entier et ensuite tu extrais la valeur du tableau clonée. Ainsi, si ton tableau contient 10000 éléments, tu clones ces 100000 éléments pour n'en garder qu'un seul !
#(num{2002})
Tu extrais la valeur du tableau et ensuite tu clones cette valeur.
Senior Member
Messages : 497
Date d'inscription : 2008-09-21
Voir le profil de l'utilisateur

RE: accroître la vitesse des casiers

le Tue 28 May - 22:42
Tout est clair maintenant, merci.


Cependant, cela reste très très lent...
avatar
Site Admin
Messages : 1039
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: accroître la vitesse des casiers

le Wed 29 May - 11:36
pat a écrit:
Cependant, cela reste très très lent...

Il est vrai que les programmes écrits en Linotte sont de plus en plus gros et tant mieux.
Il faudra que je retravaille sur l'optimisation du moteur d'exécution qui date de 2010 ( http://langagelinotte.free.fr/wordpress/?p=163 ).

Le temps passe vite...
Senior Member
Messages : 497
Date d'inscription : 2008-09-21
Voir le profil de l'utilisateur

RE: accroître la vitesse des casiers

le Wed 29 May - 11:54
J'ai constaté depuis que le ralentissement est du au fait que le casier num a été crée avec l'instruction num=#(snum).
Contenu sponsorisé

Re: accroître la vitesse des casiers

Voir le sujet précédentRevenir en hautVoir le sujet suivant
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum