Abbiamo perso l'arte della pura ottimizzazione?
I primi ingegneri lavoravano con limiti minimi. L'Apollo Guidance Computer aveva solo 2KB di RAM. Ogni bit era fondamentale. Ogni ciclo di CPU era vitale.
Oggi abbiamo gigabyte di memoria. Spesso risolviamo i problemi aggiungendo altro hardware. Se il codice è lento o pesante, aggiungiamo altra RAM. Questa abitudine ci fa perdere la capacità della pura ottimizzazione.
Puoi scrivere software migliore pensando ai vincoli.
Guarda come elabori un file di testo di grandi dimensioni in Python.
L'approccio comune: Molti sviluppatori caricano un intero file in memoria tutto in una volta.
- Usi
f.readlines(). - Questo carica ogni riga in una lista nella tua RAM.
- Se il tuo file è di 10GB, hai bisogno di 10GB di RAM.
- Questo approccio fallisce su server piccoli o dispositivi con risorse limitate.
L'approccio ottimizzato: Elabora il file una riga alla volta.
- Iteri direttamente sull'oggetto file.
- Python legge una riga, la elabora e passa alla successiva.
- L'utilizzo della memoria rimane basso e costante.
- Non importa se il file è di 1MB o 100GB.
La differenza riguarda la filosofia ingegneristica.
Aggiungere più risorse è una soluzione temporanea. Crea software fragile. Usare i vincoli per guidare il design crea software robusto.
L'ottimizzazione non riguarda solo la velocità. Riguarda l'attenzione verso le proprie risorse.
Quando scrivi codice, chiediti:
- Quanta memoria utilizza?
- Funzionerà se i dati diventano dieci volte più grandi?
- Sto facendo affidamento su hardware costoso per nascondere un codice scadente?
Un software migliore deriva dalla disciplina.
Fonte: https://dev.to/prabashanadev/have-we-lost-the-art-of-pure-optimization-31b9