Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Hello,
Dans un article pas très récent de Chris Pollach sur "l'optimisation" (http://pbdj.sys-con.com/node/117342), j'ai lu un paragraphe qui me laisse perplexe :
"Use "binary" searching techniques instead of linear searches - even for the DataWindows' Find ( ) method. Binary searching can usually locate a given row in 3-4 operations, whereas linear searching a large buffer may take thousands of operations."
Je ne comprend pas de quoi il s'agit, ou alors mon anglais est dépassé ... vraisemblablement les deux
Une âme charitable pourrait-elle prendre quelques minutes pour me donner un exemple de la chose ?
Merci d'avance !
ElFeliz
Dernière modification par elfeliz (30-01-2015 14:34:02)
Hors ligne
"Binary search" c'est une recherche dichotomique : On cherche si c'est avant ou après le milieu, puis on itère en plaçant le milieu au niveau du milieu de le première moitié ou du milieu de la deuxième moitié, et on recommence. ça paraît basique mais c'est très efficace comme méthode quand on n'a pas d'index ou de table de hachage qui donnerait tout de suite le bon élément.
Chris Pollach pense qu'on est plus efficace en cherchant soi-même qu'en utilisant la méthode Find() qui est fournie par l'objet ??
Hors ligne
C'est ce que je croyais comprendre, en effet...
Je suis un peu troublé par cette affirmation : j'avais une confiance aveugle en l'optimisation des méthodes des datawindows.
Et une confiance équivalente envers Chris Pollach :-)
Si bien que je me suis demandé un instant si je ne comprenais pas mal
Voir qu'une option du Find pour fonctionner en mode "recherche binaire" m'aurait échappée jusque là....
Hors ligne
OK, c'est confirmé : http://nntp-archive.sybase.com/nntp-arc … 1D6A8042AF
A priori sur un dataset > 1000 lignes, un algo de recherche binaire est supérieur au find en performance...
Merci pour ton input, Seki.
Hors ligne
elfeliz a écrit:
A priori sur un dataset > 1000 lignes, un algo de recherche binaire est supérieur au find en performance...
En un sens, c'est normal puisque le find évalue l'expression qui lui est donnée à chaque ligne, d'où la recherche linéaire.
D'un autre côté la recherche dichotomique n'est possible que si tes données sont triées sur la colonne qui te sert de critère, ce qui n'est pas toujours possible. PB n'est pas si mauvais
Hors ligne