Utilisation de chaines de caractères très très grandes et ralentissement de mon
mickadevelop
Messages postés55Date d'inscriptionmardi 15 février 2005StatutMembreDernière intervention 4 juin 2010
-
30 mai 2008 à 12:43
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
31 mai 2008 à 00:21
Bonjour à tous et toutes,
Voila j'ai créé un programme qui concatène un tres grand nombre de mots les uns derrière les autres.
Une question me chagrine lorsque je boucle 50000 fois j'ai l'impression que mon programme ralenti.
En recherchant j'ai cru comprendre qu'il fallait que j'augmente la taille de mon buffer pour que le programme ne ralentisse pas trop. Est ce exacte? Et comment puis- je faire pour gerer cette taille de buffer?
Merci d'avance pour votre aide.
mickadevelop
A voir également:
Utilisation de chaines de caractères très très grandes et ralentissement de mon
NHenry
Messages postés15113Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention22 avril 2024159 30 mai 2008 à 13:42
Bonjour
De déclarant une variable String et en la remplissant par des espaces (Space$(...)), puis Mid$ en Mid(MachaineDest,Offset)=Chaine source
Sinon, tu peux éventuellement utiliser un tableau de String (si tu connais le nombre délément avant d'entrer dans ta boucle) et ensuite utiliser Join pour tout lier.
Le fer à souder a besoin d'une panne pour fonctionner.
VB (6, .NET1&2), C++, C#.Net1
Mon site
cs_yvesyves
Messages postés561Date d'inscriptionsamedi 10 janvier 2004StatutMembreDernière intervention11 octobre 2010 30 mai 2008 à 18:27
Sinon tu peux toujours créer un fichier texte. Il pourra contenir une bible si tu veux mais l'accès est quand même plus lent que l'acces à la Ram. A toi de voir.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 31 mai 2008 à 00:21
Salut
Oui, c'est normal.
Au fur et à mesure que tu stockes des données dans une chaine String, elle se place en mémoire.
Si vraiment tu y mets beaucoup de données et que tu arrives à saturation de la mémoire, le système commence à stocker des morceaux de mémoire dans un fichier (PageFile.SYS) nommé "Mémoire virtuelle".
Alors bien sûr, les échanges mémoire-disque dur ralentissent la machine.
Si la machine ralentit vraiment de trop, c'est peut être aussi parce que le PageFile.sys devient trop petit.
Il est recommandé d'avoir une fichier de taille = 1.5 fois la mémoire.
Tu peux agir sur sa taille dans le panneau de config + Système + onglet Avancé + onglet Avancé encore + frame "Mémoire virtuelle.
Comme te le précausisent nos camarades, il n'est pas tellement normal d'avoir autant de données en mémoire.
Il serait bon de revoir cela et envisager une base de données ou un fichier de stockage.
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)