> Tech > Comparaison des diverses techniques de tri de sous-fichiers

Comparaison des diverses techniques de tri de sous-fichiers

Tech - Par iTPro.fr - Publié le 24 juin 2010
email

par Scott Klement, Mis en ligne le 07/06/2006 - Publié en Février 2006

Au fil des ans j’ai reçu de nombreux conseils sur « la meilleure » manière de trier un sous-fichier. Certaines des méthodes préconisées étaient simples, d’autres très complexes, mais toutes m’étaient présentées comme « la plus efficace ». Vous conviendrez avec moi que toutes ne peuvent pas être les plus efficaces. Dans cet article, je passe en revue plusieurs méthodes de tri d’un sous-fichier, j’analyse leurs avantages et inconvénients et teste chacune d’elles pour illustrer les différences de performances.Les documents traitant de performances doivent toujours être interprétés avec circonspection. En effet, les performances résultent de nombreux facteurs qu’il est difficile de prendre en compte globalement. Si vous attachez une grande importance à la performance, le mieux est d’essayer chaque méthode de tri par vous-mêmes avant d’en choisir une. Bien que je me sois efforcé de fournir des résultats aussi exacts que possible, votre matériel et vos données sont certainement différents des miens et il est donc probable que vos résultats ne seront pas exactement les mêmes. Pour que vous compreniez bien comment j’ai obtenus les nombres présentés dans cet article, je vais commencer par décrire l’environnement utilisé.

La figure 1 montre le code source DDS d’un fichier nommé CUSTFILE. Mon but était de charger les données de ce fichier dans un sous-fichier visible par l’utilisateur. Je voulais que celui-ci puisse placer son curseur sur n’importe quel champ du sous-fichier et appuyer sur F8 pour trier le sous-fichier d’après ce champ. Vous pouvez voir que le DDS pour CUSTFILE ne spécifie pas de champ clé. Il y a une bonne raison à cela : si le fichier était indexé par clé, cette clé pourrait affecter la performance du tri. J’ai aussi écrit un programme appelé RANDOMIZE, qui met les données du CUSTFILE dans un ordre aléatoire (le programme est inclus dans le code téléchargeable de cet article, disponible sur www.itpro.fr club abonnés). Ce faisant, aucun des champs ne devrait être dans un ordre particulier au moment du tri.
J’introduis les routines qui chargent les données client et je les trie dans un programme de service séparé. Ainsi, si je souhaite plus tard remplacer mon programme sur écran vert (passif) par un programme GUI, je n’aurai pas besoin de réécrire la logique de chargement et de tri du fichier. Cette méthode me permet également d’écrire un programme séparé pour tester la performance de chaque routine de tri.
Le programme de service charge les données de CUSTFILE dans une matrice. La figure 2 montre cette matrice, qui est ensuite triée sur l’un de ses champs, et le résultat est chargé dans le sous-fichier.
Ce dernier est ainsi trié. Quand l’utilisateur veut le trier sur un champ différent, il déplace le curseur sur un autre champ de l’écran et appuie sur F8. Le programme regarde où l’utilisateur a placé le curseur puis ordonne au programme de service de retrier la matrice sur le nouveau champ. Après quoi il recharge le sous-fichier à partir de la matrice et affiche le résultat Comme certaines méthodes de tri fonctionnent mieux sur différents types de données, je m’efforce d’avoir des champs alphanumériques à la fois longs et courts dans mon sous-fichier, ainsi que des types de données numérique et date. J’ai testé tous ces champs.

Certaines méthodes de tri donnent de meilleurs résultats sur de grands ensembles de données et d’autres sur des ensembles plus petits. Certaines sont plus rapides quand les données sont déjà triées en tout ou partie, tandis que d’autres méthodes y sont indifférentes. C’est pourquoi j’ai testé chaque méthode de tri sur un sous-fichier de 100, 1000 et 9 999 enregistrements. Pour chaque taille testée, j’ai aussi retrié le sous-fichier une fois ordonné, pour voir quel effet éventuel cela avait sur la performance.

Comme je ne voulais pas que d’autres facteurs puissent fausser mes tests, je les ai effectués en heures creuses, quand rien d’autre ne s’exécutait sur l’iSeries. J’ai exécuté chaque test 100 fois et j’ai calculé la moyenne des résultats pour représenter plus exactement la durée de chacun.

J’ai mené des tests sur des données prétriées et non triées sur six champs différents par six méthodes de tri différentes (SORTA, QSORT, QLGSORT, file d’attente de données indexées, index utilisateur, et SQL imbriqué) et trois tailles de sous-fichiers différentes. J’ai effectué chaque test 100 fois : soit plus de 20 000 tests pour préparer cet article !

Téléchargez gratuitement cette ressource

Guide des Services Managés pour se moderniser et se sécuriser

Guide des Services Managés pour se moderniser et se sécuriser

À l’heure où les talents du numérique sont rares et difficiles à séduire, comment bénéficier des meilleures compétences en infrastructure Cloud ou en cybersécurité pour gagner en agilité et en cyber-résilience ? Découvrez le Guide des Services managés dédiés aux PME.

Tech - Par iTPro.fr - Publié le 24 juin 2010