L’efficienza energetica è un concetto che si applica anche all’informatica. In questo articolo sviluppo l’idea che la scelta di una soluzione software in base al suo linguaggio di programmazione possa portare guadagni in termini di produttività e finanziari.
Il cloud computing è di gran moda. Aziende di tutte le dimensioni fanno girare il loro software su infrastrutture (AWS, Azure, Google Cloud) a cui affittano capacità di calcolo. Tutte queste aziende non hanno alcun interesse finanziario a farvi risparmiare tempo di calcolo, perché perderebbero denaro nel processo. In questo articolo esamino il software ad alta efficienza energetica e spiego perché la programmazione ecologica fa bene anche al vostro portafoglio.
Contatta l’agenzia di ricerca IntoTheMinds
Se avete un software che gira nel Cloud, un giorno potreste trovarvi di fronte a una spiacevole sorpresa. Non siete immuni da un’esplosione dei costi dovuta all’uso, legale o meno, delle CPU (vedi video sotto).
È per questo che dovete esaminare attentamente i linguaggi di programmazione che utilizzate, in quanto influenzano la velocità di elaborazione delle vostre operazioni.
Il linguaggio di programmazione influenza il consumo energetico
Una ricerca stabilisce il punto di riferimento per l’efficienza energetica dei linguaggi di programmazione. La sua metodologia confronta l’utilizzo della memoria e la velocità di esecuzione di 10 linguaggi di programmazione (Perl, Python, Ruby, PHP, C, C++, Lua, Tcl, JavaScript e Java). Questo approccio ha senso quando si confronta il consumo energetico, in quanto un’esecuzione più veloce e un’impronta di memoria più piccola portano generalmente a un minore consumo di energia della CPU.
Per darvi un’idea delle scale di grandezza, ho utilizzato la ricerca per calcolare alcuni ordini di grandezza.
Tempo di esecuzione
-
- C è 100 volte più veloce di Python
- Il C++ è 6,7 volte più veloce di Java
- Perl è 10 volte più veloce di Java
Questo vi dà un’idea di quali linguaggi scegliere se volete concentrarvi sull’eco-programmazione (non so se il termine esiste, ma mi sembra perfettamente appropriato).
Utilizzo della memoria
L’utilizzo della memoria non è un processo che consuma direttamente energia. Tuttavia, può avere un impatto sull’ambiente a due livelli. In primo luogo, l’uso efficace della memoria evita di aggiungere RAM alle macchine (che è costosa e la produzione di un componente elettronico richiede molta acqua). In secondo luogo, l’uso della memoria velocizza i calcoli rispetto alla lettura da un disco rigido.
-
- Il C utilizza l’1,5% della memoria consumata da Python.
- Il C++ consuma il 2% della memoria utilizzata da Python.
- Python e Perl utilizzano il 3% della memoria richiesta da Java
Il C è il linguaggio più efficiente dal punto di vista energetico
Tra i linguaggi analizzati, il C è risultato il migliore. E perché? Si tratta di un linguaggio di basso livello che, se padroneggiato e implementato correttamente, consente un migliore controllo delle risorse hardware. Questa efficienza si traduce in una maggiore velocità di esecuzione e in un utilizzo minimo della memoria. Questo è esattamente ciò a cui dovremmo puntare nella situazione attuale, se non fosse che oggi si sviluppa pochissimo software in linguaggi di basso livello.
In alcuni casi, l’esecuzione delle operazioni più impegnative dal punto di vista delle risorse sull’infrastruttura locale è più sensata rispetto al cloud.
Quali sono le implicazioni pratiche per le imprese?
È nell’interesse dell’azienda utilizzare un software ben programmato ed efficiente dal punto di vista delle risorse. In primo luogo, si risparmia tempo. Ma, per quanto possibile, dovrebbero eseguire i calcoli più impegnativi dal punto di vista delle risorse in sede piuttosto che nel cloud.
Risparmio del tempo
Parliamo innanzitutto del risparmio di tempo. Nel 2023 abbiamo intervistato 400 responsabili IT di aziende che praticano la scienza dei dati. Per il 47% degli intervistati, la velocità di calcolo era una delle priorità per l’implementazione di soluzioni future nella propria azienda.
Se siete lettori fedeli di questo blog, forse ricorderete i miei benchmark tra le soluzioni ETL. Una di queste, Anatella, si è distinta per le sue prestazioni eccezionali. I miei test hanno mostrato incrementi di prestazioni fino a x20. Anatella è stata programmata utilizzando linguaggi di basso livello (C, C++ e Assembler). I suoi concorrenti utilizzavano tecnologie basate in particolare su Java e non erano quindi in grado di tenere il passo. Ogni responsabile IT dovrebbe imparare i linguaggi utilizzati per programmare le soluzioni software commerciali che acquista.
Consultateci per la vostra ricerca di mercato IT
Guadagni finanziari
Qualunque sia il tipo di software, è importante ricordare che l’esecuzione nel Cloud può essere un cattivo calcolo finanziario. Poiché il modello di business dei fornitori di cloud è quello di vendervi minuti di calcolo, che interesse avrebbero a velocizzare l’elaborazione delle vostre operazioni?
Per quanto riguarda in particolare il calcolo parallelo, la legge di Amdahl mostra che il guadagno marginale di velocità diminuisce con il numero di processori. Mobilitare sempre più processori (e quindi spendere di più) non sarà in definitiva una soluzione finanziariamente interessante per le operazioni più pesanti.
Ecco perché è un’idea intelligente prendere in considerazione l’esecuzione delle operazioni più impegnative dal punto di vista delle risorse su un’infrastruttura locale piuttosto che nel cloud. Non solo eviterete le fatture ricorrenti del vostro provider cloud, ma eviterete anche lo stress di non sapere cosa dovrete pagare alla fine del mese. Dico questo perché ho già dovuto affrontare questo problema per conto di un cliente.
Pubblicato in Data e IT, Strategia.