11.3.7.3 : Vectoriser un programme existant
Un programme déjà développé, voire déjà en production, est potentiellement ancien, d'autant que les technologies d'optimisation ont beaucoup évolué ces dernières années.
Dans tous les cas, même pour un programme assez récent, l'optimisation ou la vectorisation de celui-ci va se heurter aux choix qui ont déjà été faits par les développeurs (qu'ils soient toujours présents ou non dans le projet).
Si ces choix ne prenaient pas en compte la vectorisation ou l'optimisation de ce programme, cette tâche va potentiellement s'avérer extrêmement difficile. Il est entendu par là que l'effort apporté pour la vectorisation de ce programme devra être important, sans la garantie d'une bonne accélération en fin de compte.
En effet, si les structures de données ont été conçues avec des classes sans un découpage
adéquat noteLes années 90 ont vu apparaître la programmation objet ainsi qu'une mode consistant à utiliser des objets le plus possible pour écrire du "beau code". Malheureusement, les structures de données qui émergent de l'application intuitive de ce modèle ont de mauvaises performances d'accès mémoire et empêchent une vectorisation efficace., la vectorisation sera impossible avec le compilateur et inefficace manuellement, sauf à changer complètement l'ordre des données pour une vectorisation optimale.
Ces erreurs de développement imposent souvent de réécrire une nouvelle version en partant de zéro afin de maîtriser les calculs, les structures de données et leurs optimisations.
Il est cependant possible d'utiliser des tableaux temporaires pour recueillir les données de ces "structures inefficaces" et ainsi vectoriser efficacement ces calculs. Si les accélérations obtenues sont acceptables, elles seront loin de celles obtenues en réécrivant totalement le programme en question