|
[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à .... ). 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 ).
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 |
| |
| |
| | | |
|
| | | | |
| | |
|