| Problème avec SaveStringList. | |
|
|
Auteur | Message |
---|
Pedro
Nombre de messages : 1552 Date d'inscription : 19/01/2014
| Sujet: Problème avec SaveStringList. Lun 28 Jan 2019 - 9:00 | |
| Bonjour.
Klaus, puisque tu es de retour, pourrais-tu regarder le problème avec cette fonction, soulevé dans un de mes posts précédents.
Elle ne permet pas de sauvegarder de très gros fichiers.
Merci. | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Lun 28 Jan 2019 - 9:21 | |
| Ok, je vais regarder cela. Quel est le phénomène exact ? Un plantage, un message d'erreur, un bloquage, n délai anormalement long... ? Une indication serait utile. | |
|
| |
Pedro
Nombre de messages : 1552 Date d'inscription : 19/01/2014
| Sujet: Problème avec SaveStringList. Lun 28 Jan 2019 - 10:08 | |
| Bonjour.
@Klaus.
J'obtiens le message suivant:
Impossible to save the file !
Merci de la suite. | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Lun 28 Jan 2019 - 10:59 | |
| J'ai mis une modification en ligne sur mon site WEB (pas sur le WebDav !). Pourrais-tu essayer ? Pour le moment, le numéro de version n'a pas été changé.
EDIT
J'ai passé la version à V8.71 du 28/01/2019. C'est plus cohérent.
EDIT
Le WebDav est à jour également. | |
|
| |
Pedro
Nombre de messages : 1552 Date d'inscription : 19/01/2014
| Sujet: Problème avec SaveStringList. Lun 28 Jan 2019 - 20:40 | |
| Bonsoir. J'ai testé la sauvegarde d'un très gros fichier (environ 250 Mo), et tout fonctionne correctement maintenant. Un grand merci Klaus. - Code:
-
dll_on "kgf"
dim f1$, f2$, res%
f1$="C:\traducteur\dico_français_espagnol.txt" f2$="C:\a\dico_français_espagnol.txt"
res%=dll_call2("CreateStringList",20,2) res%=dll_call2("LoadStringList",20,adr(f1$)) res%=dll_call2("SortStringList",20,2) res%=dll_call2("SaveStringList",20,adr(f2$))
message "fin" | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Lun 28 Jan 2019 - 23:44 | |
| YES !!! Merci !
As-tu une impression de la vitesse, de la performance, par rapport à la solution que tu avais mise en place ? | |
|
| |
Pedro
Nombre de messages : 1552 Date d'inscription : 19/01/2014
| Sujet: Problème avec SaveStringList. Mar 29 Jan 2019 - 15:47 | |
| Bonjour.
Après avoir réalisé un test avec mon dictionnaire français-espagnol, j'ai constaté ceci:
. ancienne méthode: 159 sec. . nouvelle méthode: 13 sec.
D'où un gain très important de vitesse.
Merci Klaus. | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Mar 29 Jan 2019 - 15:49 | |
| Super ! Merci pour le renseignement ! | |
|
| |
Pedro
Nombre de messages : 1552 Date d'inscription : 19/01/2014
| Sujet: Problème avec SaveStringList. Mar 29 Jan 2019 - 21:18 | |
| Bonsoir. Pour info, le même code en java est exécuté en 2,5 sec !! - Code:
-
// Version du 29 jan 2019.
import java.applet.*; import java.awt.*; import java.awt.event.*; import java.util.*; import java.io.*;
public class test_copie_fichier extends Frame implements WindowListener {
String ligne=null;
public static void main(String[] args) { new test_copie_fichier().setVisible(true); }
public test_copie_fichier() { Toolkit kit=Toolkit.getDefaultToolkit() ; Dimension screenSize=kit.getScreenSize() ; int largeur_ecran=screenSize.width; int hauteur_ecran=screenSize.height; setLayout(null); setBounds((int) ((largeur_ecran-600)/2), (int) ((hauteur_ecran-440)/2), 600, 440); setResizable(false); setAlwaysOnTop(true); }
public void paint(Graphics g) { lire(); }
public void windowClosing(WindowEvent event) { // On ferme la fenêtre. this.dispose(); } public void windowClosed(WindowEvent event) {} public void windowOpened(WindowEvent event) {} public void windowIconified(WindowEvent event) {} public void windowDeiconified(WindowEvent event) {} public void windowActivated(WindowEvent event) {} public void windowDeactivated(WindowEvent event) {}
public void lire() { // 2,5 sec. long start = System.currentTimeMillis(); try { BufferedReader buffer1=new BufferedReader(new FileReader("c:/traducteur/dico_français_espagnol.txt")); BufferedWriter out=new BufferedWriter(new FileWriter("c:/a/dico_français_espagnol.txt"));
while (true) { ligne=buffer1.readLine(); if (ligne.equals("ZZZ")) break; out.write(ligne); } buffer1.close(); out.close(); } catch (IOException e) {System.out.println("erreur !");} System.out.println(System.currentTimeMillis()-start); } } | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Mar 29 Jan 2019 - 23:15 | |
| Eh bien, je vais m'y remettre et tenter de pondre quelque choe d'encore plus rapide... | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Mar 29 Jan 2019 - 23:52 | |
| Bon, j'ai pondu quelque chose. Pourrais-tu essayer et mesurer à nouveau, en rechargeant KGF.dll ? | |
|
| |
Pedro
Nombre de messages : 1552 Date d'inscription : 19/01/2014
| Sujet: Problème avec SaveStringList. Mer 30 Jan 2019 - 8:22 | |
| Bonjour. Avec le code suivant, j'obtiens un temps de zéro !! Est-ce normal, ou y-a-t'il un bug ? - Code:
-
dll_on "kgf"
dim res%, f1$, f2$, n%
n%=number_click
f1$="C:\traducteur\dico_français_espagnol.txt" f2$="C:\a\dico_français_espagnol.txt"
res%=dll_call2("CreateStringList",20,2) res%=dll_call2("LoadStringList",20,adr(f1$)) res%=dll_call2("SortStringList",20,2) res%=dll_call2("SaveStringList",20,adr(f2$))
message str$(number_click-n%) | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Mer 30 Jan 2019 - 9:28 | |
| La variable number_click donne le numéro du dernier objet cliqué, pas une mesure de temps. Donc, ton résultat est correct selon ton code - le dernier objet cliqué n'ayant pas changé entre le début et la fin de l'exécution, le résultat est zéro... Mais ce n'est pas une mesure de temps.
JE pense que tu voulais utiliser number_ticks... | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Mer 30 Jan 2019 - 9:49 | |
| Personnellement, je testerais ainsi: - Code:
-
dll_on "kgf"
dim res%, f1$, f2$, n%
f1$="C:\traducteur\dico_français_espagnol.txt" f2$="C:\a\dico_français_espagnol.txt"
res%=dll_call2("CreateStringList",20,2) res%=dll_call2("LoadStringList",20,adr(f1$)) res%=dll_call2("SortStringList",20,2)
n%=number_ticks res%=dll_call2("SaveStringList",20,adr(f2$)) message str$(number_ticks-n%) afin d'avoir la mesure de la seule fonction SaveStringList. | |
|
| |
Pedro
Nombre de messages : 1552 Date d'inscription : 19/01/2014
| Sujet: Problème avec SaveStringList. Mer 30 Jan 2019 - 10:28 | |
| Bonjour. Merci Klaus. J'obtiens finalement 1281, soit 1,281 sec. Ah, problème. Je viens de m'apercevoir que le fichier final fourni par SaveStringList est corrompu, donc inutilisable ! Merci de voir. Le dico de 245 Mo est téléchargeable ici: https://e-nautia.com/share/86926-uqam8d28Pourrais-tu tester, stp ? | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Mer 30 Jan 2019 - 10:40 | |
| Pour SaveStringGrid seul, j'obtiens 109. Mais c'est vrai - le résultat n'est pas bon. Je regarde cela...
En attendant, j'ai remis la version précédente qui, elle, marche bien. Pour SaveStringList seule, j'obtiens 235, ce qui est déjà excellent pour la taille du fichier. | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Mer 30 Jan 2019 - 11:06 | |
| J'ai remis ma version accélérée. Le résultat est bon maintenant (fichier d'origine identique au fichier copié), et la durée pour SaveStringList est de 15, sur ma machine ! Oui, 15 milli-secondes. Autant dire, instantanée. | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Mer 30 Jan 2019 - 12:45 | |
| J'ai également accéléré LoadStringList, et avec le fichier taille réelle dont tu m'as posté le lien, voici le résultat: avec le code suivant: - Code:
-
dll_on "kgf"
dim res%, f1$, f2$, n1%, n2%, n3%
to_foreground 0 f1$="dico_français_espagnol.txt" f2$="dico_français_espagnol_bis.txt"
res%=dll_call2("CreateStringList",20,2)
n1%=number_ticks res%=dll_call2("LoadStringList",20,adr(f1$)) n1% = number_ticks - n1%
n2%=number_ticks res%=dll_call2("SortStringList",20,2) n2% = number_ticks - n2%
n3%=number_ticks res%=dll_call2("SaveStringList",20,adr(f2$)) n3% = number_ticks - n3%
message "LoadStringList: "+str$(n1%)+" SortStringList: "+str$(n2%)+" SaveStringList: "+str$(n3%) +" "+str$(res%)+" lignes"
end
Pas mal, pour plus d'un million de lignes, non ? | |
|
| |
Pedro
Nombre de messages : 1552 Date d'inscription : 19/01/2014
| Sujet: Problème avec SaveStringList. Mer 30 Jan 2019 - 19:51 | |
| Bonsoir.
J'obtiens les temps suivants:
. LoadStringList: 2812 . SortStringList: 1938 . SaveStringList: 2719
Plus fort !
Merci Klaus. | |
|
| |
Klaus
Nombre de messages : 12281 Age : 74 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Problème avec SaveStringList. Jeu 31 Jan 2019 - 0:46 | |
| Eh bien, je suis content ! Voilà une intervention couronnée de succès, et qui apporte un vrai plus à des fonctions existantes !
Juste une apparté: je suis en train de faire la documentation complète de l'objet KGFGrid... | |
|
| |
Contenu sponsorisé
| Sujet: Re: Problème avec SaveStringList. | |
| |
|
| |
| Problème avec SaveStringList. | |
|