Comment améliorer les performances (augmenter la vitesse) de mon application ?Si la question est récurrente, la réponse n'est pas simple pour autant. Comme principe général, il faut se souvenir que les problèmes de performances sont plus souvent à imputer à l'algorithme choisi qu'à son implémentation. Nous présenterons ici des techniques générales afin d'accélérer le fonctionnement d'une application. Préallouer de la mémoireLorsque de nombreuses allocations mémoire sont nécessaires, il est utile d'allouer un bloc de mémoire à l'avance et d'ensuite épuiser cette réserve. En effet, les allocations mémoire sont généralement coûteuses en temps d'exécution. En réduire le nombre est donc gage de performances. Cette technique peut être utilisée pour :
Utiliser d'autres langagesIl est parfois impossible d'implémenter efficacement un algorithme en VB, notamment parce que la manipulation de pointeurs et certains opérateurs tels que le left shift ou le right shift ne sont pas présents nativement. Il peut alors être utile d'utiliser d'autres langages, tels que le C, C++ ou l'assembleur qui possèdent les facilités requises. Ceci peut notamment être fait à l'aide de Dll standards, Dll COM, ou de n'importe quel support de communication efficace. Manipuler les String avec des $, éviter les VariantVisual Basic propose un type extrêmement permissif nommé Variant. Ce "super-type" permet de contenir aussi bien des chaînes de caractères que des objets ou des entiers. Cette flexibilité a un coût non négligeable sur les performances, ce qui vaut au Variant la dénomination de "type lent". Il est donc conseillé de n'utiliser ce type que lorsqu'aucune alternative n'est envisageable. De la même manière, les fonctions de manipulation de chaînes de caractères se déclinent souvent en deux versions, l'une d'entre elle étant suffixée d'un $. La version "sans $" utilise et renvoie des données de type Variant, la conversion de String vers Variant et vice-versa étant effectuée si nécessaire. L'autre version travaille directement avec des données de type String et présente de nettement meilleures performances. Il est donc préférable d'utiliser Mid$() au lieu de Mid(). Traiter les données utilesLorsque des données sont extraites d'un fichier, d'une base de données, etc. il faut, dans la mesure du possible, n'en extraire que la partie utile. Extraire des données pour ensuite les ignorer a toujours un impact négatif sur les performances. Il peut être utile de changer la manière dont sont stockées les données, s'il est impossible de réaliser cette extraction directement. Changer les données à la source n'est pas toujours désirable ou même possible. Néanmoins, il est souvent envisageable de transformer l'agencement des données au chargement de l'application, afin d'accélérer le fonctionnement par la suite. Par exemple, si la source de données est un dictionnaire en tant qu'une liste de mots, pour connaître l'existence d'un mot dans le dictionnaire, celui-ci pourrait être chargé une seule fois au démarrage de l'application dans une table de hachage. Ne pas vouer une confiance aveugle aux librairiesDe nombreuses librairies fournissent des services très utiles. Néanmoins, il faut toujours porter attention à l'optique dans laquelle la librairie a été conçue et particulièrement si les performances étaient prioritaires. La librairie de scripting FSO, qui permet la manipulation de fichiers, illustre ce point. L'énumération de fichiers à l'aide de FSO est particulièrement lente. En effet, les scripts sont généralement conçus pour être utilisés sans contact avec l'utilisateur et dans un environnement interprété qui est lui-même lent. FSO a donc pour objectif de fournir une grande flexibilité et non des performances optimales. Dans le cas des composants COM, il faut remarquer que l'early binding permet d'atteindre une plus grande vitesse d'exécution. Connaître les options de compilationVisual Basic offre de nombreuses facilités permettant de limiter les fréquentes vérifications assurant que le code n'effectuera pas une opération involontaire. Ces opérations incluent l'accès involontaire à un élément hors des bornes d'un tableau, le dépassement de capacité d'un entier, etc.. Une section entière de l'aide de Visual Basic est consacrée à la compilation et aux optimisations possibles. Mesurer le gainEnfin, lorsque les performances souhaitées auront été atteintes, il sera temps de vérifier quantitativement les gains. La réalisation d'un benchmark est alors utile. Néanmoins, il est important de réaliser de tels tests dans de bonnes conditions. Cela signifie plusieurs choses :
Pour aller plus loin
|
Date de publication : 13 septembre 2007 Dernière modification : 11 septembre 2008 Rubriques : Divers Mots-clés : performance, vitesse, rapidité, vite, rapide, accélérer, lent, lenteur |