FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Demande de fonction spécifique avec KGF. - Page 2 Emptypar Pedro Aujourd'hui à 8:08

» Un autre pense-bête...
Demande de fonction spécifique avec KGF. - Page 2 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Demande de fonction spécifique avec KGF. - Page 2 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Demande de fonction spécifique avec KGF. - Page 2 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Demande de fonction spécifique avec KGF. - Page 2 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Demande de fonction spécifique avec KGF. - Page 2 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Demande de fonction spécifique avec KGF. - Page 2 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Demande de fonction spécifique avec KGF. - Page 2 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Demande de fonction spécifique avec KGF. - Page 2 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Demande de fonction spécifique avec KGF. - Page 2 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Demande de fonction spécifique avec KGF. - Page 2 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Demande de fonction spécifique avec KGF. - Page 2 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Demande de fonction spécifique avec KGF. - Page 2 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Demande de fonction spécifique avec KGF. - Page 2 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Demande de fonction spécifique avec KGF. - Page 2 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

 

 Demande de fonction spécifique avec KGF.

Aller en bas 
2 participants
Aller à la page : Précédent  1, 2, 3  Suivant
AuteurMessage
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 14:00

Oui, je peux. Faudra changer un peu l'algorithme, mais ce sera fait bientôt.

As-tu vu la valeur de res% qui donne le temps passé dans la fonction, en tics d'horloge ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 14:12

J'ai mis une nouvelle version sur le WebDav, dossier DLLs. Maintenant, les mots à exclure ne seront plus exlus qu'en première position du critère.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1595
Date d'inscription : 19/01/2014

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 14:29

Désolé Klaus, mais je ne constate aucune amélioration, après téléchargement de la dernière version de kgf, avec le code suivant.
La combo reste désespérément vide, c'est incompréhensible.

Code:
' test_SearchMultipleStringsInTextFile.bas

dim res%, ticks

dim t$:t$=" vende a domicilio . "
dim interdit$:interdit$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*"
dim fichier$:fichier$="fichiers\formes_verbales_espagnol_français_avec_complement.txt"
dim nombre%:nombre%=3
dim marqueur$:marqueur$=" #"

combo 100

dll_on "kgf"

ticks=number_ticks
res%=dll_call6("SearchMultipleStringsInTextFile",adr(t$),adr(fichier$),handle(100),adr(interdit$),nombre%,adr(marqueur$))
text 100,item_read$(100,1)
message str$(number_ticks-ticks)                                                                                                                    
end
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 14:36

Chez moi, il trouve 3 lignes qui sont les suivantes:
Citation :
vende a domicilio #348982;6;2
vende a domicilio #348982;6;3
vende a domicilio #348982;6;4

J'ai refait la copie de KGF.dll, au cas où...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1595
Date d'inscription : 19/01/2014

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 15:41

Bonjour.

Je pense que le problème vient de la taille du fichier, qui contient 917.427 lignes.
J'ai testé le code avec un fichier de 20 lignes seulement, et tout fonctionne parfaitement.

En fait, j'ai besoin uniquement du n° de la 1ère ligne répondant aux critères.

Il faudrait en fait réaliser une sorte de SearchStringList, avec chacun des critères requis.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 15:46

Bon, alors il faut vraiment essayer le laisser la routine aller jusqu'au bout; et afficher la valeiur de res% au retour. Tant que la fonction ne retourne pas, le travail n'est pas terminé.

Dans un premier temps, il faut voir si, sur le fichier réel, le travail est fait correctement. Ma fonction, de touts façons, ne retourne que les numéros d'enregistrement dans la combo, donc c'est bon à ce niveau.

Dans un deuxième temps, tu pourrais me passer un lien de téléchargement du fichier en question pour que je tente de dompter la bête dans le réel...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1595
Date d'inscription : 19/01/2014

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 15:52

J'ai mis en ligne le fichier txt à 'adresse suivante:

dl.free.fr/gScAjImYh

L'adresse soit être précédée de http://

Merci de la suite.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 16:21

J'ai téléchargé, merci.

J'avais remanié l'algorithme pour améliorer la vitesse. Le résultat est assez spectaculaire. Tu trouveras la nouvelle DLL sur mon WebDav, dossier DLLs. Avec ton fichier, je trouve les 4 lignes suivantes:
Citation :
881356
881357
881358
881359
en 5687 ticks, pour le critère suivant:
Code:
dim t$:t$=" vende a domicilio . "

Qu'en penses-tu ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1595
Date d'inscription : 19/01/2014

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 16:30

Voici la valeur de res%: 75484 !!

Avec la version précédente de kgf.
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 16:32

Et bien, la nouvelle sera sacrément plus rapide !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1595
Date d'inscription : 19/01/2014

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 16:41

Je viens de tester sur le texte d'origine.
La durée d'exécution est malheureusement beaucoup trop longue.

res%=90375 !!

Ne pourrais-tu pas réaliser un SearchStringList, comme je le proposais dans un post précédent ?

La méthode d'origine réalisant la même opération en seulement 4,5 sec, avec le bout de code suivant.

Code:
   ticks=number_ticks
    for k%=1 to count(2)-flag2%
        e$=item_read$(2,k%)
        ' message "["+e$+"]"
        if instr(m$,"*"+e$+"*")+numeric(e$)=0
           if flag2%=1 then e$=e$+" "+item_read$(2,k%+1)+" "
           e$=lower$(e$)+"#"
           res%=dll_call3("SearchStringList",y%,adr(e$),p%)
           if res%>0 then item_add 3,res%
        end_if
    next k%
    ' 4,5 sec.
    ' message str$(number_ticks-ticks)
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 16:53

J'ai retesté - je suis entre 5200 et 5300. Pas plus. Il doit y avoir un problème de version de DLL, Pedro.

Pour ce qui est de l'emploi d'une StringList, je vais faire des essais. Mais lar rapport à la recherche d'une seule chaîne de caractères dans un gros fichier, il y a une différence importante: ici,, il faut chercher un nombre potentiel de chaînes de caractères différentes, chacune à travers tout le fichier. Difficile pour chaque chaîne individuelle de parcourir la StringList. Dans la fonction présente, le lis le fichier, ligne par ligne, mais avec un gros tampon de lecture de 128 Ko, et je cherche chaque critère dans la ligne lue, avant de lire la suivante. Mais je vais voir ce que ça donne avec une StringList.

Ceci dit, reprends la DLL du WebDav - je suis sûr que tu constateras un gros progrès.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1595
Date d'inscription : 19/01/2014

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 16:59

Après un test réalisé sur le texte de départ, la 1ère ligne de la combo indique le nombre 17621, ce qui correspond à la ligne suivante du fichier:

acuda a lo más urgente #19920;10;1

Or, cette ligne n'apparaît pas dans le texte !!

De plus, je crois savoir que l'utilisation de SearchStringList donne directement le 1er n° de ligne correspondant au critère indiqué, ce qui est le but recherché.

D'où une vitesse impressionnante.

Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 17:35

J'ai mis une nouvelle versio de KGF.dll sur le WebDav, dossier DLLs. Il y a maintenant deux fonctions: l'ancienne qui cherche dans un fichier, et la  nouvelle qui cherche dans une StringList. A la place de adr(Fichier$), tu passes le numéro de la StringList (entre 1 et 20) créée séparement par CreateStringList, puis chargée par la commande appropriée.

Puis, j'ai modifié ton dernier code de sorte qu'il utilise les deux méthodes pour que tu puisses comparer. Il y a deux combos pour les résultats, et un mémo pour recevoir les mesures de temps au lieu d'avoir des messages. Pour la parte StringList, j'ai colontairement ciblée la mesure de temps sur la fonction elle-même, en excluant le temps de création et de chargement de la StringList.

Voici le code:
Code:
' test_SearchMultipleStringsInTextFile.bas

dim res%, ticks, fichier$

dim t$:t$=" vende a domicilio . "
dim interdit$:interdit$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*"
fichier$="formes_verbales_espagnol_français_avec_complement.txt"
dim nombre%:nombre%=3
dim marqueur$:marqueur$="#"

combo 100
combo 101 : left 101,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,200

dll_on "kgf"

AvecLectureDirecte()
AvecStringList()

end



sub AvecLectureDirecte()
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInTextFile",adr(t$),adr(fichier$),handle(100),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"Lecture directe: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                    
  text 100,item_read$(100,1)
end_sub

sub AvecStringList()
  dim_local SL%
  SL% = 1
  res% = dll_call2("CreateStringList",SL%, 0)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$))

  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(101),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                    
  text 101,item_read$(101,1)

  res% = dll_call1("DeleteStringList",SL%)
end_sub

J'ai l'impression que les numéros de ligne retournées sont les bonnes. Mais je vais pointer plus précisément.

Je ne peux pas recourir à de multiples appels de SearchStringList du fait de la multitude de critères de recherche potentiellement générés. ll est hors de question de parcourir la StringList depuis le début, pour chaque critère.

EDIT

Vérification faite, pour la phrase du programme, les numéros de ligne sont les bons.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1595
Date d'inscription : 19/01/2014

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 18:00

J'ai testé avec le code suivant, mais malheureusement la combo reste vide !

Bien que tenían que # figure bien dans le fichier, à la ligne 812086.

Mais on avance.

Code:
' test_SearchMultipleStringsInTextFile.bas

dim res%, ticks, fichier$

dim t$

t$ = "El murciélago de herradura de Willard fue descubierto en la República "
t$ = t$ + "Democrática del Congo en 2013 y lo más probable es que se extinga en unas "
t$ = t$ + "décadas . Con él , servicios prestados hasta la mitad de las especies endémicas del corazón de "
t$ = t$ + "África estarán amenazadas en los próximos 50 años . Hasta ahora tenían "
t$ = t$ + "que lidiar con el avance de los humanos , su agricultura y su ganadería , "
t$ = t$ + "que les iban comiendo su territorio . Ahora el cambio climático ha tomado "
t$ = t$ + "el relevo y les arrebatará hasta dos tercios del que les queda . A algunos "
t$ = t$ + "animales , como este quiróptero , los dejará literalmente sin espacio ."

dim interdit$:interdit$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*"
fichier$="formes_verbales_espagnol_français_avec_complement.txt"
dim nombre%:nombre%=2
dim marqueur$:marqueur$=" #"

combo 100
combo 101 : left 101,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,200

dll_on "kgf"

' AvecLectureDirecte()
AvecStringList()

end

sub AvecLectureDirecte()
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInTextFile",adr(t$),adr(fichier$),handle(100),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"Lecture directe: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                    
  text 100,item_read$(100,1)
  message "fin"
end_sub

sub AvecStringList()
  dim_local SL%
  SL% = 1
  res% = dll_call2("CreateStringList",SL%, 0)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$))

  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(101),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                    
  text 101,item_read$(101,1)

  res% = dll_call1("DeleteStringList",SL%)
  message "fin"
end_sub
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 18:24

J'ai pris ton code, j'ai réactivé les deux méthodes et déplacé le message "Fin" hors des UBS, juste avant le END. J'ai ajouté également un affichage du nombre de lignes trouvées. Voici le résultat (sans aucun changement dans la DLL):
Demande de fonction spécifique avec KGF. - Page 2 Aa160
On trouve un nombre considérable de lignes, mais le texte est grand. Alors, les pointer une à une... J'ai fait quelques verifications au hasard, mais je n'ai pas constaté d'anomalie.

Voici le code modifié::
Code:
' test_SearchMultipleStringsInTextFile.bas

dim res%, ticks, fichier$

dim t$

t$ = "El murciélago de herradura de Willard fue descubierto en la República "
t$ = t$ + "Democrática del Congo en 2013 y lo más probable es que se extinga en unas "
t$ = t$ + "décadas . Con él , servicios prestados hasta la mitad de las especies endémicas del corazón de "
t$ = t$ + "África estarán amenazadas en los próximos 50 años . Hasta ahora tenían "
t$ = t$ + "que lidiar con el avance de los humanos , su agricultura y su ganadería , "
t$ = t$ + "que les iban comiendo su territorio . Ahora el cambio climático ha tomado "
t$ = t$ + "el relevo y les arrebatará hasta dos tercios del que les queda . A algunos "
t$ = t$ + "animales , como este quiróptero , los dejará literalmente sin espacio ."

dim interdit$:interdit$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*"
fichier$="formes_verbales_espagnol_français_avec_complement.txt"
dim nombre%:nombre%=3
dim marqueur$:marqueur$=" #"

combo 100
combo 101 : left 101,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,300

dll_on "kgf"

AvecLectureDirecte()
AvecStringList()
message "fin"

end

sub AvecLectureDirecte()
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInTextFile",adr(t$),adr(fichier$),handle(100),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"Lecture directe: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                 
  item_add 102,"  "+str$(count(100))+" lignes trouvées"
  display
  text 100,item_read$(100,1)
end_sub

sub AvecStringList()
  dim_local SL%
  SL% = 1
  res% = dll_call2("CreateStringList",SL%, 0)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$))

  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(101),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                 
  item_add 102,"  "+str$(count(101))+" lignes trouvées"
  display
  text 101,item_read$(101,1)

  res% = dll_call1("DeleteStringList",SL%)
end_sub
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1595
Date d'inscription : 19/01/2014

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 18:29

Je viens de relancer le test avec la 2è option.

Tout fonctionne maintenant, mais le temps d'exécution est vraiment trop important.

J'obtiens res%=109297
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 18:52

Je trouve au contraire que ce résultat est assez bon. Pour un seul critère de 3 mots, j'obtiens entre 3000 et 3500 cycles, avec les deux méthodes. Ton texte contient 100 mots, donc tu as 98 critères de 3 mots. Logiquement, tu devrais avoit au moins 3000*98 = 29400 cycles. Tu obtiens un tiers du temps probable, ce qui est excellent.

Mais laisse-moi te poser une question: est-ce que le critère (le groupe de n mots) peut figurer n'importe où dans les lignes du fichier de référence, ou est-ce que ce ne peut être qu'à partir du début de ces lignes ? Cela fait une grande différence !

EDIT

Jai regardé rapidement dans le fichier. Il y a des choses qui m'étonnent, mais je ne suis pas compétant, ne parlant pas Espagnol (juste Portugais...). Entre les lignes 914766 et 017345, je constate une prolifération de "aa...aa" en fin de mot qui est tout à fait étonnante. Est-ce normal ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 19:18

J'ai fait un essai, en cherchant uniquement des lignes dont le début est identique au critère. Alors, on trouve 6 résultats, au lieu des 1665 en recherche d'existance n'importe où dans la ligne. Qu'est-ce qu'il faut faire ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1595
Date d'inscription : 19/01/2014

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 19:26

Oui Klaus, le critère de recherche ne peut figurer qu'au début d'une ligne du fichier.

C'est pour cela que je ne comprenais pas la lenteur relative de la recherche.

Pourrais-tu faire en sorte de n'utiliser que cette configuration ?
Revenir en haut Aller en bas
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 19:33

Bien. Ca clarifie la situation. Je vais revoir mon algorithme en fonction de cela.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 21:25

Petite demande de précision:
Lorsque tu crées des StringList avec KGF.dll (et en particulier celle qui utilise ce lon fichier dont tu m'as donné le lien) , est-ce que tu les crées avec le second paramètre de CreateStringList en valeur 1 ou 2 ? Quel type de tri imposes-tu ? Ansi ou Windows ? J'en ai besoin pour la stratégie de recherche...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyJeu 29 Mar 2018 - 23:55

Autre demande de précision:
Pour un critère de recherche, est-ce qu'il faut retourner TOUS les numéros d'enregistrement pour ce critère ou seulement le PREMIER ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


Nombre de messages : 12331
Age : 75
Localisation : Ile de France
Date d'inscription : 29/12/2009

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyVen 30 Mar 2018 - 0:08

Bon Pedro, j'ai fait comme j'ai pu, avec ce que j'avais. J'ai mis une nouvelle version de KGF.dll dans le WebDav, dossier DLLs. J'ai complètement réécrit la partie recherche dans une StringList, et voici le résultat qui est pas mal:
Demande de fonction spécifique avec KGF. - Page 2 Aa161

Voici le programme qui va avec:
Code:
' test_SearchMultipleStringsInTextFile.bas

dim res%, ticks, fichier$

dim t$

t$ = "El murciélago de herradura de Willard fue descubierto en la República "
t$ = t$ + "Democrática del Congo en 2013 y lo más probable es que se extinga en unas "
t$ = t$ + "décadas . Con él , servicios prestados hasta la mitad de las especies endémicas del corazón de "
t$ = t$ + "África estarán amenazadas en los próximos 50 años . Hasta ahora tenían "
t$ = t$ + "que lidiar con el avance de los humanos , su agricultura y su ganadería , "
t$ = t$ + "que les iban comiendo su territorio . Ahora el cambio climático ha tomado "
t$ = t$ + "el relevo y les arrebatará hasta dos tercios del que les queda . A algunos "
t$ = t$ + "animales , como este quiróptero , los dejará literalmente sin espacio ."

dim interdit$:interdit$="*a*con*de*del*des*dos*el*en*este*la*las*le*les*lo*los*que*se*sin*su*un*une*y*"
fichier$="formes_verbales_espagnol_français_avec_complement.txt"
dim nombre%:nombre%=3
dim marqueur$:marqueur$=" #"

combo 100
combo 101 : left 101,width(100)+10
memo 102 : top 102,height(100)+10 : width 102,300
display

dll_on "kgf"

' AvecLectureDirecte()
 AvecStringList()
message "fin"

end

sub AvecLectureDirecte()
  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInTextFile",adr(t$),adr(fichier$),handle(100),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"Lecture directe: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                  
  item_add 102,"   "+str$(count(100))+" lignes trouvées"
  display
  text 100,item_read$(100,1)
end_sub

sub AvecStringList()
  dim_local SL%
  SL% = 1
  item_add 102,"Chargement de la StringList..."
  display
  res% = dll_call2("CreateStringList",SL%, 0)
  res% = dll_call2("LoadStringList",SL%,adr(fichier$))
  item_add 102,"Stringlist chargé."
  display

  ticks=number_ticks
  res%=dll_call6("SearchMultipleStringsInStringList",adr(t$),SL%,handle(101),adr(interdit$),nombre%,adr(marqueur$))
  item_add 102,"StringList: "+ str$(number_ticks-ticks)+" ("+str$(res%)+" dans la DLL)"                                                                                                                  
  item_add 102,"   "+str$(count(101))+" lignes trouvées"
  display
  text 101,item_read$(101,1)

  res% = dll_call1("DeleteStringList",SL%)
end_sub

Tu remarqueras que je crée la StringList avec un second paramètre zéro, ignorant ainsi la notion de tri. Je tombe à 18000 cycles pour l'ensemble du texte. Nettement mieux que tout ce que j'avais fait avant.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


Nombre de messages : 1595
Date d'inscription : 19/01/2014

Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 EmptyVen 30 Mar 2018 - 7:48

Bonjour.

Pour info, les formes verbales sont déterminées dans une sub, puis enregistrées dans une dlist triée.

Il n'est donc pas question de Windows ni ANSI.

Pour répondre à ta question, je n'ai besoin que de la 1ère occurrence répondant aux critères.

J'obtiens res%=8172, ce qui est nettement mieux !

Mais encore loin du résultat de la routine postée plus avant (soit 4,5 sec).

Peut-être que le résultat sera encore meilleur en ne considérant que la 1ère occurrence.

Merci de la suite.
Revenir en haut Aller en bas
Contenu sponsorisé





Demande de fonction spécifique avec KGF. - Page 2 Empty
MessageSujet: Re: Demande de fonction spécifique avec KGF.   Demande de fonction spécifique avec KGF. - Page 2 Empty

Revenir en haut Aller en bas
 
Demande de fonction spécifique avec KGF.
Revenir en haut 
Page 2 sur 3Aller à la page : Précédent  1, 2, 3  Suivant
 Sujets similaires
-
» Compilateur FBPano
» Demande de maquette d'un moteur 2D avec sprites/collisions
» Des dlls compilées a la demande en FreeBasic, avec l'appel
» Font specifique
» Créer un fichier de taille spécifique

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: