Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

Le deal à ne pas rater :
Code promo Nike : -25% dès 50€ d’achats sur tout le site Nike
Voir le deal

Problème de sauvegarde : ralentissement de l'atelier

power_settings_newSe connecter pour répondre
3 participants

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRE: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
Merci !
Je vais regarder ça tranquillement.

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRE: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
Il me faudrait également ton répertoire Icône <img src=" title="Big Grin" />

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRE: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
Ce soir, je vais publier une version 2.1 alpha 6 qui devrait corriger, je l'espère, les problèmes de lenteur.

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRE: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
Voici ma sauvegarde :

001,001,001,
001,001,001,
001,001,001,

Ce que je veux faire :

Pour chaque nombre de ma sauvegarde :
La méthode "casier vaut c.chargecasiernombres(nombre_case_total)" lit les 3 premiers chiffre "001", les convertis en nombre "1", puis lis les 3 suivants, les convertis en nombre, etc...

Mais je n'arrive pas à le faire, malgré l'utilisation de la méthode c.clire(",")

Un petit coup de main ?

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRE: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
hmmm, je vais essayer de faire ça.

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRE: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
Et voili le résultat :

[php]
/*
Format du fichier en entrée :
012,013,450,
456,545,123,
321,896,897,
789,456,001,
002
*/

globale
conduit :: conduit

principale :
retour :: casier de nombres
compteur <
- 0
début
efface tableau
évoque conduit.sélectionneretouvrir()
essaie lis
tant que vrai, lis
lecture :: nombre
si ((compteur mod 3) == 0) et (compteur!=0), lis
// On supprime le retour chariot qui nous embete bien !
// http://fr.wikipedia.org/wiki/CRLF
évoque conduit.nlire(2) // 2 si on est sous Windows sinon 1 sous Linux
ferme
convertis conduit.clire(",") en lecture
ajoute lecture dans retour
incrémente compteur
ferme
ferme
affiche retour
[/php]

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRE: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
Ce code n'est pas très différent de celui-ci :

[php]
/*
Format du fichier en entrée :
012013450
456545123
321896897
*/

Ouvrir :
c :: conduit
mémo14 :: texte
mémo14 :: nombre
début
évoque c.sélectionneretouvrir()

Pour chaque nombre_case_hauteur, lis
Pour chaque nombre_case_largeur, lis
mémo14 vaut c.nlire(3)
Convertis mémo14 en num14
ferme
// on avance le curseur de 2 caractères pour éviter de lire le retour à la ligne
mémo14 vaut c.nlire(2)
ferme
[/php]

Le problème de ce code c'est qu'avec une grande sauvegarde, son exécution est très lente.

admincpc a écrit:

Bien vu, je confirme que c'est bien le verbe convertir qui est très lent !
ça va être dur de l'optimiser...


C'est pourquoi tu as ajouté cette fonction :

[php]
casier vaut c.chargecasiernombres(nombre_case_total)
[/php]

Le problème de cette fonction c'est que je suis obligé d'indiquer un seul nombre par ligne dans ma sauvegarde :
007
000
005
000
007
000
000
000
000
000
005
000

Et donc, si j'ai 1000 nombres, la sauvegarde est beaucoup plus lourde !

C'est pourquoi il faudrait que c.chargecasiernombres() puisse utiliser non seulement le retour à la ligne, pour charger le nombre suivant, mais également un symbole.
Par exemple, une virgule.

Ainsi je pourrais écrire ma sauvegarde comme ceci :

007,000,005
000,007,000
000,000,000
000,005,000

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRE: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
Sauvegarder un fichier en utilisant comme séparateur le retour chariot ou un virgule ne devrait pas influer sur le temps d'exécution de ton traitement.

Il est même plus compliqué de sauvegarder un fichier qui a la forme suivante :

Code:


007,000,005
000,007,000
000,000,000
000,005,000


Car tu as deux séparateurs : le retour chariot et la virgule !

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRE: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
Le temps d'exécution de mon programme est ralenti à cause du verbe Convertir utilisé dans ton exemple.
Pour que le temps de chargement de ma sauvegarde soit optimal, il faut donc que j'utilise la fonction chargecasiernombres()

Or, utiliser cette fonction nécessite d'alourdir ma sauvegarde, car je ne peux enregistrer qu'un seul nombre par ligne.

C'est pourquoi j'aimerais que la fonction chargecasiernombres() puisse utiliser comme séparateur une virgule, afin de pouvoir enregistrer plusieurs nombres sur une même ligne.

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRE: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
Tu as comparé les temps entre un fichier avec des retours chariots et un fichier avec des virgules comme séparateur ?

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRE: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
J'ai comparé les temps en utilisant ceci :

[php]
casier vaut c.chargecasiernombres(nombre_case_total)
[/php]

Et ceci :

[php]
Ouvrir :
c :: conduit
mémo14 :: texte
num14 :: nombre
j :: nombre
début

Pour chaque nombre_case_hauteur, lis
Pour chaque nombre_case_largeur, lis
mémo14 vaut c.nlire(3)
Convertis mémo14 en num14
Si num14 != 0, lis
Parcours Sauvegarde_drag avec num14, j
ferme
incrémente j
ferme
// on avance le curseur de 2 caractères pour éviter de lire le retour à la ligne
mémo14 vaut c.nlire(2)
ferme
[/php]

Les temps d'exécution sont les mêmes.

Autant pour moi, je pensait que le verbe convertir était toujours plus lent que la méthode chargecasiernombres().

Du coup, je n'ai plus besoin d'utiliser cette méthode et je peux écrire ma sauvegarde comme bon me semble x)

Encore désolé, j'aurais dû faire cette vérification avant de poster, au lieu de me baser sur mes précédents exemples...

descriptionProblème de sauvegarde : ralentissement de l'atelier - Page 3 EmptyRe: Problème de sauvegarde : ralentissement de l'atelier

more_horiz
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
power_settings_newSe connecter pour répondre