Ingrédients : -> un problème à résoudre
-> des solutions
-> un (éventuellement des, mais c'est tout de suite plus compliqué) critères pour juger une solution
Notre problème : Avoir un programme qui fait ce qu'on veut (autrement dit correct)
Nos solutions : tous les programmes corrects possibles.
Notre critère : la minimisation du temps de calcul.
"l'optimisation" telle que tu l'entends peut se voir dans ce cadre comme de la "recherche locale" : on part d'une solution existante et on itère de petits changements sur cette solutions pour minimiser le temps de calcul. Le risque de ce genre d'optimisation est de tomber sur un "optimum local" qui ne soit bien moins bien que l'optimum global (globalement on changera pas grand chose à l'algo en optimisant au niveau assembleur).
Une optimisation à un niveau plus global, tu vas considérer de plus gros changements dans le code (considérer le problème de manière plus abstraite, découper en des tâches, choisir l'algorithme connu le plus efficace pour résoudre les différentes tâches, etc.). C'est plus difficile de faire de l'optim globale automatiquement que de l'optim locale.
Et ce cadre s'applique aussi bien à l'optimisation du code qu'a l'optimisation de pleins d'autres objets, c'est beau non ?
[^] # Re: Bravo mais..
Posté par thoasm . En réponse à la dépêche La quintessence des algorithmes bit à bit. Évalué à 4.
Pour généraliser un peu :
Ingrédients : -> un problème à résoudre
-> des solutions
-> un (éventuellement des, mais c'est tout de suite plus compliqué) critères pour juger une solution
Notre problème : Avoir un programme qui fait ce qu'on veut (autrement dit correct)
Nos solutions : tous les programmes corrects possibles.
Notre critère : la minimisation du temps de calcul.
"l'optimisation" telle que tu l'entends peut se voir dans ce cadre comme de la "recherche locale" : on part d'une solution existante et on itère de petits changements sur cette solutions pour minimiser le temps de calcul. Le risque de ce genre d'optimisation est de tomber sur un "optimum local" qui ne soit bien moins bien que l'optimum global (globalement on changera pas grand chose à l'algo en optimisant au niveau assembleur).
Une optimisation à un niveau plus global, tu vas considérer de plus gros changements dans le code (considérer le problème de manière plus abstraite, découper en des tâches, choisir l'algorithme connu le plus efficace pour résoudre les différentes tâches, etc.). C'est plus difficile de faire de l'optim globale automatiquement que de l'optim locale.
Et ce cadre s'applique aussi bien à l'optimisation du code qu'a l'optimisation de pleins d'autres objets, c'est beau non ?