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
» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Commande SearchStringList. Emptypar papydall Hier à 16:57

» PANORAMIC V 1
Commande SearchStringList. Emptypar papydall Hier à 3:22

» select intégrés [résolu]
Commande SearchStringList. Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Commande SearchStringList. Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Commande SearchStringList. Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Commande SearchStringList. Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Commande SearchStringList. Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Commande SearchStringList. Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Commande SearchStringList. Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Commande SearchStringList. Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Commande SearchStringList. Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Commande SearchStringList. Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Commande SearchStringList. Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Commande SearchStringList. Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Commande SearchStringList. Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
-20%
Le deal à ne pas rater :
Ecran PC GIGABYTE 28″ LED M28U 4K ( IPS, 1 ms, 144 Hz, FreeSync ...
399 € 499 €
Voir le deal

 

 Commande SearchStringList.

Aller en bas 
2 participants
AuteurMessage
Pedro

Pedro


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

Commande SearchStringList. Empty
MessageSujet: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 15:50

Bonjour.

@Klaus.

Je me bats depuis plusieurs jours avec cette fonction, afin d'améliorer la vitesse d'exécution d'une routine de recherche.

Mais le problème malheureusement vient des nombreux appels à KGF, qui doit contenir maintenant plus de 700 fonctions !
Et je n'entrevois pas de solution au problème.

Pourrais-tu regarder de près cette fonction, afin de l'optimiser peut-être.
Merci d'avance.
Revenir en haut Aller en bas
Klaus

Klaus


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

Commande SearchStringList. Empty
MessageSujet: Re: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 18:06

Bon, je vais me plonger dedans...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Commande SearchStringList. Empty
MessageSujet: Re: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 18:16

Question: est-ce que ta StringList est triée ou non ? Si elle est triée, selon quel mode ? Ce sont deux traitements complètement distincts, et ce serait important de savoir dans quelle branche il faut chercher.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Commande SearchStringList. Empty
MessageSujet: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 18:26

Voici les méthodes que j'utilise:

Création de la StringList.

Code:
sub CreateLoadStringList(n%,mode%,file$)
    ' On peut numéroter des StringList de 1 à 20 uniquement.
    ' Toujours utiliser cette routine.
    ' mode% indique si la liste doit être triée.
    ' 2 = la liste est triée en mode ASCII.
    ' 1 = la liste est triée en mode Windows.
    ' 0 = la liste n'est pas triée.
    if n%>20
       dlist n%:file_load n%,file$
          else
       res%=dll_call2("CreateStringList",n%,mode%)
       dll_file$=file$
       if res%=0 then res%=dll_call2("LoadStringList",n%,adr(dll_file$))
    end_if
end_sub

Exemple d'appel.

Code:
f$="fichiers\formes_verbales_"+langue_source$+"_"+langue_cible$+"_avec_complement.txt"
CreateLoadStringList(2,0,f$)

J'espère que cela pourra t'aider.
Revenir en haut Aller en bas
Klaus

Klaus


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

Commande SearchStringList. Empty
MessageSujet: Re: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 18:38

Oui. Je constate que ta liste n'est pas triée (le deuxième paramètre de ta procédure CreateLoadStringList est passé comme 0.

Or, dans ce cas, il faut parcourir la liste entière depuis le début jusqu'à ce que la cible soit trouvée, ou jusqu'à la fin si la cible n'est pas trouvé. Egt connaissant la longueur de tes listes, je suis certain que ça prend un certain temps.

Es-tu sûr de ne pas pouvoir fournir une liste triée en mode 2 (Ascii) ? C'est la recherche la plus rapide (par dichotomie).
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Commande SearchStringList. Empty
MessageSujet: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 20:29

Bonsoir.

Voilà, tout est dit dans le code suivant:

Code:
dll_on "kgf"

dim debut, e$, f$, fin, k%, n%, mode%, res%, te$

te$=string$(100," ")

f$="fichiers\formes_verbales_espagnol_français_avec_complement.txt"
CreateLoadStringList(2,1,f$)

debut=number_ticks
e$="sigue siendo#"
for k%=1 to 100
    ' sigue siendo#551491;1;3
    ' 678220
    res%=dll_call3("SearchStringList",2,adr(e$),adr(te$))
next k%
caption 0,trim$(te$)                               
fin=number_ticks
' 6.6 sec si mode%=0
' 0.0 sec si mode%=1
message "ok: "+str$(fin-debut)

end

sub CreateLoadStringList(n%,mode%,file$)
    ' On peut numéroter des StringList de 1 à 20 uniquement.
    ' Toujours utiliser cette routine.
    ' mode% indique si la liste doit être triée.
    ' 2 = la liste est triée en mode ASCII.
    ' 1 = la liste est triée en mode Windows.
    ' 0 = la liste n'est pas triée.

    res%=dll_call2("CreateStringList",n%,mode%)
    if res%=0 then res%=dll_call2("LoadStringList",n%,adr(file$))
end_sub
Revenir en haut Aller en bas
Klaus

Klaus


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

Commande SearchStringList. Empty
MessageSujet: Re: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 20:37

Eh oui... toute la différence est là. La recherche par dichotomie dans une liste triée est redoutablement efficace.

Alors, sujet résolu ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Commande SearchStringList. Empty
MessageSujet: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 20:38

Oui, le problème semble résolu.

Mais parfois, j'obtiens un res% négatif ?

Ah, je viens de consulter la doc à ce sujet, qui dit ceci:

Si la liste est triée et si une clé partielle est spécifiée, alors la fonction retourne une valeur négative qui représente l'indice devant lequel il faudrait insérer le critère pour respecter l'ordre de tri.
Revenir en haut Aller en bas
Contenu sponsorisé





Commande SearchStringList. Empty
MessageSujet: Re: Commande SearchStringList.   Commande SearchStringList. Empty

Revenir en haut Aller en bas
 
Commande SearchStringList.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» une commande!!
» Commande OPEN_DIALOG n
» commande execute
» La commande EXECUTE
» Références de commande

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: