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
» Form(résolu)
Commande SearchStringList. Emptypar leclode Aujourd'hui à 17:59

» trop de fichiers en cours
Commande SearchStringList. Emptypar Marc Aujourd'hui à 11:42

» Bataille navale SM
Commande SearchStringList. Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
Commande SearchStringList. Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
Commande SearchStringList. Emptypar Pedro Jeu 25 Avr 2024 - 19:31

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

» Naissance de Crocodile Basic
Commande SearchStringList. Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Commande SearchStringList. Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Commande SearchStringList. Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Commande SearchStringList. Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Commande SearchStringList. Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Commande SearchStringList. Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Commande SearchStringList. Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Commande SearchStringList. Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Commande SearchStringList. Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
Le Deal du moment : -39%
Pack Home Cinéma Magnat Monitor : Ampli DENON ...
Voir le deal
1190 €

 

 Commande SearchStringList.

Aller en bas 
2 participants
AuteurMessage
Pedro

Pedro


Nombre de messages : 1549
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 : 12274
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 : 12274
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 : 1549
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 : 12274
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 : 1549
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 : 12274
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 : 1549
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!!
» KGF_dll - nouvelles versions
» Commande FREE
» Non demande de commande
» Commande FILTER

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: