[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Per risparmiare energia elettrica



On 22/02/2022 20:20, Davide Prina wrote:

> però non è sempre così vero, dipende da cosa devi fare. Per alcune cose 
> puoi metterci più o meno lo stesso tempo su qualsiasi linguaggio di 
> programmazione. 

Esattamente. La perfetta risposta di ogni programmatore: "dipende" :D

Per prima cosa bisogna distinguere di quale ambiente stiamo parlando, e
di quale uso.

Se parliamo di software per desktop, scrivere software efficiente
consente, per esempio, di risparmiare batteria su un notebook/tablet. A
parte l'ovvio risparmio ambientale, consente di lavorare per più tempo
senza bisogno di ricaricare.

Se parliamo di software su server/cloud, scrivere software efficiente
(sia come CPU che come RAM) consente di servire più client con meno server.

Ma d'altro canto bisogna vedere anche la velocità di sviluppo/update e
effettivamente quanto e come il software viene usato.

> In un altro articolo, che ora non ho cercato, che ho letto poco tempo fa 
> era indicato che, qualcosa come il 70-80% di tutte le applicazioni web 
> sono realizzate in PHP (nello studio indica un consumo medio di 27.64), 
> passare da PHP ad altro linguaggio potrebbe far risparmiare una quantità 
> di energia non indifferente.

Prendo questo come esempio per espandere il concetto.

Un sito in PHP, nel 99% dei casi, è niente più che un layer sottile tra
il database e il client HTTP.

PHP di suo, su un PC moderno, serve tranquillamente 100-200 connessioni
al secondo.
Lo stesso sito in JS serve 4-500 connessioni al secondo.
In Go schizza a 100-200.000 al secondo. In Rust arrivi a 1-2 milioni al
secondo.
Il tutto senza particolari ottimizzazioni.

Ma il problema non è il linguaggio, ma il DB. Se il DB non riesce a
gestire più di 20 query al secondo, non importa che linguaggi ci metti
davanti. Sono tutti sufficienti.

Nel momento in cui devi fare qualcos'altro (resize di immagini, analisi
o conversione di video/audio, etc.) allora ha senso lasciare perdere
tutto e concentrarsi su linguaggi come Go, Rust, C/C++, etc.

E infatti le funzioni di elaborazione immagini di PHP sono scritte in
C/C++, le funzioni di analisi dati di Python sono scritte in C/C++,
buona parte dei tool della toolchain di JS (compilatori, bundler,
ottimizzatori, per finire con Deno) è ora scritta in Go o Rust.

In pratica: "dipende" :)

> infatti con l'assembly si dovrebbe arrivare ad ottenere la maggior 
> efficienza; avevo notato anch'io l'assenza.

Questo non è più vero da diversi anni. I compilatori e gli ottimizzatori
scrivono assembly migliore di praticamente qualsiasi umano (tranne
software estremamente semplici), per il semplice fatto che ogni CPU ha
bisogno di un assembly diverso. E non parlo solo di ARM vs x86, ma per
esempio un Core2, un i5, un Celeron e un Ryzen5 hanno cache diverse,
pipeline diverse, diversa architettura di accesso a cache e RAM, diverso
"hyperthreading".

Per alcune applicazioni l'impatto è enorme. Per la maggior parte è
minimo. :)

Per lo stesso motivo sta pian piano diventando falso anche che C sia più
efficiente. Alcune astrazioni di Rust e C++ vengono ottimizzate meglio
del basso livello di C.

Bye.


Reply to: