Myriad Forum « Questions de volume (de données) »
 Welcome, Guest.
 You can read all messages, but to be able to post,
 please Login or Register.
Mar 7th, 2021, 7:44am 
   Myriad Forum
   MyrScript Language
(Moderator: Forum Administrator)
   Questions de volume (de données)
« Previous topic | Next topic »
Pages: 1  Reply | Notify of replies | Print
   Author  Topic: Questions de volume (de données)  (Read 308 times)
Andre_B
Board Master
*****





   
Email

Gender: male
Posts: 1782
Questions de volume (de données)   D_sol_.png
« on: Aug 18th, 2020, 2:25pm »
Quote | Modify

J'écris un script dans lequel je lis sur un fichier disque (par OpenFile et File.Read) un grand nombre de lignes. Et j'effectue des recherches de zones pour déterminer ceux (peu) que je traites et réécris dans un autre fichier (ou alors je les mets dans une table).  
 
Suivant la complexité de ces recherches, le script se plante après un certain temps: soit il se termine sans crier Gard, soit il m'affiche l'écran désagréable de type "Houston, we have a problem..." ci-dessous.  
 
Le problème ne devrait pas être dues aux données ni au traitement, car il arrive de façon semi-aléatoire.  
 
Typiquement, le blocage se produit après lecture de quelques centaines de lignes.  
 
J'ai pensé à un problème de timing, mais les bypass à ces problèmes-là n'aident pas ici.    
 
Cela pourrait être dû à une mémoire de travail qui est remplie, mais comment savoir quelle en est l'usage, quelle est la limite, et comment l'augmenter?  
 
Merci de vos suggestions.  
 
offline


André Baeck, Belge vivant dans le Gard
Windows 10, HA 992e (et précédents)
bubu42
Board Master
*****





   


Gender: male
Posts: 9966
Re: Questions de volume (de données)  
« Reply #1 on: Aug 18th, 2020, 4:12pm »
Quote | Modify

Je pencherais plutôt pour la saturation de la mémoire de travail allouée à Myrscript ou un truc de ce genre. Je n'ai pas trouvé de fonction liée à l'usage de la mémoire dans Myrscript, donc ça va ếtre délicat.
Cela dit, s'il y a du tri (sans doute sur des chaînes), il y a peut-être un ou des tableau(x) créé(s) dans une boucle et non effacé(s) après usage. Il me semble avoir vu quelques mises en garde dans le manuel à propos de l'utilisation de Dispose, mais je ne me souviens plus très bien à quel endroit.  
Autre chose : en Lua, il y a la fonction collectgarbage() qui permet de faire du ménage si nécessaire...
offline

Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
Andre_B
Board Master
*****





   
Email

Gender: male
Posts: 1782
Re: Questions de volume (de données)  
« Reply #2 on: Aug 18th, 2020, 6:24pm »
Quote | Modify

Merci Jean-Pierre,  
En effet ça doit être une saturation de mémoire.  
A ce niveau-là du processus il n'y a pas encore de tri (c'est l'étape suivante).  
 
Mais en réduisant les éléments de logique, je suis arrivé à la ligne qui perturbe:  
 
Rec = FolderIx..strrep(" ",80-strlen(FolderIx))..MyForm(size)  
surtout que la fonction MyForm inclut un usage similaire de strrep.  
 
Je l'ai remplacée par:
Rec = strsub(FolderIx..strrep(" ",80),1,80)..MyForm(size)
 
et le problème a disparu. Ou il est peut-être reporté à un fichier d'origine encore plus grand; mais je vais de toutes façons ne créer qu'une seule fois  strrep(" ",80) en initialisation.  
 
 
... et tout ça parce que je n'arrive pas à piger la fonction lua "format()" qui est faite pour des formattages beaucoup plus compliqués!  
offline

André Baeck, Belge vivant dans le Gard
Windows 10, HA 992e (et précédents)
bubu42
Board Master
*****





   


Gender: male
Posts: 9966
Re: Questions de volume (de données)  
« Reply #3 on: Aug 18th, 2020, 11:02pm »
Quote | Modify

Effectivement, c'est subtil. De manière générale, j'ai aussi du mal avec les opérations sur les strings (et honni soit qui mal y pense ! )
offline

Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
jihel9
Board Master
*****



baryton

   
Email

Gender: male
Posts: 2221
Re: Questions de volume (de données)  
« Reply #4 on: Aug 19th, 2020, 7:14am »
Quote | Modify

offline

Jean Louis, à Anthisnes (25 Km au sud de Liège)
Harmony Assistant 64bit, la dernière version
Win 10 Insider, Intel I5, 12gb, Chrome francophone (traduction automatique des autres langues)
Geo
Board Master
*****





   


Gender: male
Posts: 2189
Re: Questions de volume (de données)  
« Reply #5 on: Aug 19th, 2020, 9:49am »
Quote | Modify

Le problème semble résolu, j'apporte quand même ma petite contribution car les déboires d'André me sont habituels, le compteur de crash est à trois chiffres sur mon installation pas si ancienne que cela.
Quelques remarques :
Ca s'améliore au fil des versions.
Cela se produit plus fréquemment à la suite d'opérations manuelles ou de plusieurs scripts. La solution est donc de redémarrer ouvrir la partition myr et lancer le script sans rien faire d'autre avant. Ou scinder les scripts.
Passer les variables qui ne sont plus utilisées à nil. J'ai vu la différence.
J'ai tenté la fonction Garbage collect sans savoir à quoi ça sert, comment s'en servir et je ne sais dire sur son efficacité.
Curieusement quand j'ouvre deux myr pour ne traiter que celui qui est affiché, il y en a donc un inutile, ça ne se plante plus ou très rarement.
 
 
offline
bubu42
Board Master
*****





   


Gender: male
Posts: 9966
Re: Questions de volume (de données)  
« Reply #6 on: Aug 19th, 2020, 11:31am »
Quote | Modify

on Aug 19th, 2020, 9:49am, Geo wrote:
J'ai tenté la fonction Garbage collect sans savoir à quoi ça sert, comment s'en servir et je ne sais dire sur son efficacité.
C'est une routine qui balaye toute la mémoire et repère les éléments qui ne sont plus utilisables par le programme (ex. des variables non détruites) et éventuellement range tout ça en évitant les trous, un peu comme le défragmenteur de disque sous Windows. Normalement, Lua (donc Myrscript) a un garbage collection automatique mais on peut aussi le lancer "manuellement". Le problème, à mon avis, c'est que tout ça prend du temps d'exécution. Je me souviens des années 80 où certains prgrammes déclenchaient la procédure dès que la mémoire libre devenait faible et on passait de longues périodes à attendre. Mais à l'époque on ne parlait pas de processeurs multi-coeurs à 3 GHz ni de RAM en Go, mais plutôt en MHz et Ko. Il fallait se montrer trèèèès économe !
offline

Harmony Assistant - Ubuntu + Wine et Windows XP sur machine virtuelle. VS, OMeR, PDF2M
Andre_B
Board Master
*****





   
Email

Gender: male
Posts: 1782
Re: Questions de volume (de données)  
« Reply #7 on: Aug 20th, 2020, 5:00pm »
Quote | Modify

Pour être plus précis, ce sont probablement toutes les fonctions lua et/ou de manipulation de strings qui sont très gourmandes en mémoire. Particulièrement strrec apparemment, mais ce n'est certainement pas le seul.  
 
Il y aussi "des choses" qui ne sont pas remises à zéro au début d'une exécution, il faut arrêter et redémarrer HA même s'il ne se plante pas tout seul...  
 
Mais j'avance...  
 
Je vous tiens au courant de la suite des événements.
offline

André Baeck, Belge vivant dans le Gard
Windows 10, HA 992e (et précédents)
PaulL
Board Master
*****




Organist and choir director

   


Gender: male
Posts: 902
Re: Questions de volume (de données)  
« Reply #8 on: Aug 21st, 2020, 12:35am »
Quote | Modify

I would look for possible buffer overflows, as well as memory allocation/deallocation problems.
offline

Le coeur a ses raisons, que la Raison ne connaît point.
Paul Littlefield, Church musician

HA+VS+PdfToMusic Win 10
Pages: 1  Reply | Notify of replies | Print

« Previous topic | Next topic »

« Myriad Forum » Powered by YaBB 1 Gold - SP 1.1!
YaBB © 2000-2002,
Xnull. All Rights Reserved.

Top of page
Legal information Last update:  (c) Myriad