PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → [WD9] Accés disque + rapide qu'accés mémoire?=
[WD9] Accés disque + rapide qu'accés mémoire?=
Iniciado por freddie3, jun., 07 2005 8:54 PM - 3 respostas
Publicado em junho, 07 2005 - 8:54 PM
Bonjour,
Petit test soumis à votre sagacité:
J'ai un fichier texte que je souhaite importer dans un fichier HF (rien d'extraordinaire jusque là
.... :D ).
Ce fichier texte est un fichier de codes Rivoli, c'est à dire une suite de binomes:
Code alphaNum de 5 ou 9 car + libellé de 30 car maxi séparés par un espace.
Chaque binome est séparé du suivant par un RC. (jusque là, tout va bien :D).

Ce fichier renferme à peu près 2 400 000 codes Rivoli (y en a un qui rigole plus ;o) )

Dans ma petite tête, je me suis dit qu'un traitement en mémoire serait + rapide qu'une suite
d'accès disque (2 400 000 !!!).
J'ai donc utilisé la boucle suivante:
sVoies = fChargeTexte("fcvoi.txt") // fichier texte = 61 000 Ko
nNB_Voie = ChaîneOccurrence(Voies,RC)
POUR I = 1 A nNB_Voie
sEnreg = ExtraitChaîne(sVoies,I,RC)
Code_Rivoli.Cod_Rivoli = SansEspace(Gauche(sEnreg,9))
Code_Rivoli.Lib_Rivoli = SansEspace(sEnreg[[10 A ]])
HAjoute(Code_Rivoli)
FIN

Cette boucle, après + de 24H n'est toujours pas arrivée au bout: au début, le fichier se remplit
rapidement (WDMap), mais ralentit au fil des heures de façon incompréhensible ! J'ai pourtant
refait +sieurs tests, en enlevant même tous les index, mais le comportement reste le même !

J'ai donc abandonné, et essayé par acquis de conscience une boucle de FLitLigne() + Hajoute() ,
qui, à ma grande surprise (et à mon grand bonheur) est arrivée au bout de moins de 2 heures, avec
un index sur chaque valeur !!!

Le micro est un P4 récent, doté de 1Go de mémoire, sous XP Pro.

Quelqu'un peut-il m'expliquer ce comportement que je trouve inattendu ?

Merci de votre attention
Freddie l-)

--
freddie3@wanadoo.fr
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Publicado em junho, 08 2005 - 11:35 AM
Peut etre une voix :
l hyperthreading, a desactive OU active suivant le cas ...

On a un pb "similaire" avec un client mais sur une base SQL Server.
Sans l hypertruc, le logiciel qu utilise le client utilise 100% de l UC,
et donc lorsque l on veut faire de grosses requetes ca plante (alors
que franchement ce foutu logiciel pourrait n utiliser que 50% !!!).

En activant l hypertruc, il y a tjrs une partie de l uc qui est libre d utilisation
et tout se passe bien ....

Alors dans ton cas c est peut etre plus un pb de memoire, il est probable
que ton xp est reserve une trop grosse place pour lui...
(il est quand meme reconnu que Xp n est pas top dans la gestion de la memoire,
meme si c est moin pire qu une Windows 98 ;-)
Publicado em junho, 08 2005 - 11:57 AM
Bonjour,

peut être avec ce code à tester :

sVoies = fChargeTexte("fcvoi.txt") // fichier texte = 61 000 Ko

sEnreg est une chaine = ExtraitChaîne(sVoies,rangpremier,RC)
TANTQUE sEnreg <> EOT
Code_Rivoli.Cod_Rivoli = SansEspace(Gauche(sEnreg,9))
Code_Rivoli.Lib_Rivoli = SansEspace(sEnreg[[10 A ]])
HAjoute(Code_Rivoli)
sEnreg = ExtraitChaîne(sVoies,rangsuivant,RC)
FIN
Publicado em junho, 08 2005 - 5:12 PM
A priori, il ne devrait pas y avoir beaucoup de différence, parceque l'algorythme est le même.
Peut-être la piste de l'Hyper...chose, (faut reconnaître qu'il a bon dos !!!) ;o))
As-tu questionné le ST ?
Beber