𝗔𝘃𝗼𝗻𝘀-𝗻𝗼𝘂𝘀 𝗽𝗲𝗿𝗱𝘂 𝗹'𝗮𝗿𝘁 𝗱𝗲 𝗹'𝗼𝗽𝘁𝗶𝗺𝗶𝘀𝗮𝘁𝗶𝗼𝗻 𝗽𝘂𝗿𝗲 ?
Les premiers ingénieurs travaillaient avec des limites infimes. L'ordinateur de guidage d'Apollo ne disposait que de 2 Ko de RAM. Chaque bit comptait. Chaque cycle CPU était vital.
Aujourd'hui, nous disposons de gigaoctets de mémoire. Nous résolvons souvent les problèmes en ajoutant du matériel. Si le code est lent ou lourd, nous ajoutons de la RAM. Cette habitude nous fait perdre la compétence de l'optimisation pure.
Vous pouvez écrire de meilleurs logiciels en réfléchissant aux contraintes.
Regardez comment vous traitez un fichier texte volumineux en Python.
La méthode courante : De nombreux développeurs chargent un fichier entier en mémoire d'un seul coup.
- Vous utilisez f.readlines().
- Cela charge chaque ligne dans une liste en RAM.
- Si votre fichier fait 10 Go, vous avez besoin de 10 Go de RAM.
- Cette approche échoue sur les petits serveurs ou les appareils limités.
La méthode optimisée : Traitez le fichier ligne par ligne.
- Vous itérez directement sur l'objet fichier.
- Python lit une ligne, la traite, puis passe à la suivante.
- Votre utilisation de la mémoire reste faible et constante.
- Peu importe que le fichier fasse 1 Mo ou 100 Go.
La différence réside dans la philosophie d'ingénierie.
Ajouter plus de ressources est une solution temporaire. Cela crée des logiciels fragiles. Utiliser les contraintes pour guider votre conception crée des logiciels robustes.
L'optimisation ne concerne pas seulement la vitesse. Il s'agit d'être attentif à vos ressources.
Lorsque vous écrivez du code, demandez-vous :
- Combien de mémoire cela utilise-t-il ?
- Cela fonctionnera-t-il si les données sont dix fois plus volumineuses ?
- Est-ce que je compte sur du matériel coûteux pour masquer un mauvais code ?
De meilleurs logiciels sont le fruit de la discipline.
Source: https://dev.to/prabashanadev/have-we-lost-the-art-of-pure-optimization-31b9