Optimiser tableau

Bonjour

Je cherche à optimiser ce code :
Je fais
<code 4D>
LISTE DES DOCUMENTS($1;$Temp_Docs;Chemin récursif+Chemin absolu+Ignorer invisibles)

</code 4D>

J’obtiens un premier tableau.
Je fais ensuite une boucle sur tous les éléments, et un Chercher dans tableau dans un second tableau, si l’élément est absent, je l’ajoute au second tableau.

Cela reste assez long sur des milliers d’éléments…surtout que cette boucle est répétée toutes les 3 secondes…

Y’a t’il un intérêt avec la commande <code 4D>
VALEURS DISTINCTES
</code 4D>
:?:

Bonjour Matthieu

La réponse est dans la commande “Find in sorted array”. (Chercher dans tableau trié)
ça va BEAUCOUP plus vite…

et la magie c’est que si la valeur n’est pas trouvée, ça dit OU l’insérer (pour que le tableau reste trié)

Je veux bien un petit bench en retour :slight_smile:

Roland

Merci Roland

Mais je dois toujours avant faire ma boucle

Le bench dit que je divise par 3 :wink:

: Matthieu LAMPERIERE

Le bench dit que je divise par 3 :wink:
en interprété, j’imagine

non en compilé

(re)
Est-ce que “LISTE DES DOCUMENTS” est inclu dedans ou seulement le traitement des tableaux?

Bon, tout dépend de la taille des tableaux.
Plus les tableaux sont grand, plus le “find in sorted array” sera efficace (dichotomie)

C’est un poil décevant quand même… je vais regarder de mon côté :slight_smile:

Roland

Il est inclus

Le tri me pose problème. Car le second tableau qui est alimenté fait parti d’une Listbox, qui elle même est triée sur une autre colonne…:roll:

J’ai fait une base rapido pour tester

Sur un tableau de chaines de 100 000 elements, j’ai un gain compris entre 600 et 700 %

[]33716890;“Your comment here…”[/]
(les nombres dans le tableau d’origine sont bien des chaines de caractère, pas des réels)

https://forums.4d.com/4DBB_Main/x_User/4028/files/33716870.zip

Roland

“Le tri me pose problème. Car le second tableau qui est alimenté fait parti d’une Listbox, qui elle même est triée sur une autre colonne…”

je suggère alors:

  • LISTBOX SORT COLUMNS (tableau concerné)

  • Traitement

  • LISTBOX SORT COLUMNS (“autre colonne”)

Roland Lannuzel

Roland

Dans ta base exemple, à aucun moment tu ne fais un trier tableau.
Suis-je donc obligé de le faire :?:

Pour ne pas perturber ma listbox, mes tris et ma sélection en cours, je fais un COPIER TABLEAU avant et je fais le tri et le chercher par tableau trié sur ce dernier

Je ne trie jamais mon tableau car il est toujours trié…
C’est le truc que j’adore dans cette commande qui renvoie la position OÙ doit être insérée la nouvelle valeur si elle n’a pas été trouvée.

Maintenant, je ne veux pas rentrer dans votre code ni dans votre interface. Ce sont deux domaines qui sont sensés être séparés :slight_smile:

Roland Lannuzel

Bon là c’est top :wink:

Merci Roland :!: