En général, la solution la plus importante à un problème sera celle qui existe réellement et est valable pour les cas tels qu'ils existent pour votre problème. En d'autres termes, évitez l' optimisation prématurée jusqu'à ce que vous sachiez réellement que vous disposez d'un code inefficace ou d'un code efficace qui doit être plus rapide.
N'oubliez pas non plus que la meilleure solution pour votre application n'est peut-être pas la solution générale. Cas et point, il y a quelques années, un professeur a donné à notre classe un problème dans lequel nous devions imprimer les 10 premiers numéros d'un type donné (désolé, ma mémoire me fait défaut quant au type, mais c'était l'un des nombres les plus inhabituels classes) et on nous a donné un test pour vérifier que le nombre était le type donné. C'était l'étendue du problème qui nous a été donné et on nous a dit que c'était dû le lendemain avec la solution la plus efficace recevant le plein crédit. La conférence suivante, le professeur a résumé les résultats:
- Certains élèves ont utilisé une boucle simple et la formule fournie pour vérifier que les chiffres étaient corrects et les afficher, lents mais ont fait le travail, O (n ^ 3).
- D'autres étudiants ont fait leurs recherches et trouvé une formule qui a fait un meilleur travail de vérification pour s'assurer qu'un nombre donné était valide, ces programmes fonctionnaient beaucoup plus rapidement, O (n ^ 2).
- Un élève a utilisé la formule lente pour générer les valeurs, puis les a copiées dans un tableau constant dans leur code et en afficher le contenu, O (n).
La solution finale a été jugée la plus efficace par le professeur. Il s'avère que le problème était en fait un exercice pour bien comprendre le problème et pas seulement pour sortir et trouver la solution la plus efficace.
Le point de ce qui précède est que, lorsqu'il s'agit de trouver une solution efficace à un problème, il est généralement préférable de passer du temps à vous assurer que vous comprenez vraiment quel est le problème avant de partir et d'écrire du code, ou d'essayer d'optimiser le code. Si vous pouvez stocker un ensemble de valeurs de référence dans un tableau constant, il vaut mieux le faire du point de vue des performances que d'essayer d'écrire un algorithme sophistiqué.
De même, n'oubliez pas que pour la plupart des applications, les développeurs eux-mêmes sont les seules personnes qui ont tendance à voir du code inefficace (quand il n'est pas inutilement inefficace!). Si vous écrivez du code propre qui ne fait exactement que ce qu'il doit faire, il y a de fortes chances que la plupart du temps, les utilisateurs ne remarquent pas de problèmes de performances lorsqu'ils travaillent avec votre programme et lorsqu'ils optimisent simplement les parties qu'ils mentionnent. vous.