Utilisation de chaines de caractères très très grandes et ralentissement de mon

mickadevelop Messages postés 55 Date d'inscription mardi 15 février 2005 Statut Membre Dernière intervention 4 juin 2010 - 30 mai 2008 à 12:43
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 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

3 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
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
0
cs_yvesyves Messages postés 561 Date d'inscription samedi 10 janvier 2004 Statut Membre Dernière intervention 11 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.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
0
Rejoignez-nous