0xDEADBEEF

RSS
««« »»»

Energetická efektivita programovacích jazyků

21. 9. 2017

Software má dopad na svět. Pozitivní i negativní. Tím negativním je spotřeba energie, která někde musí být vyrobená a většinou je to z fosilních paliv. V roce 2015 byl Evropský průměr kolem 0.35kg CO2 na vyrobenou kilowatthodinu. Jeden server s 1000W zdrojem tedy za rok přispěje ke 3 tunám CO2 v atmosféře. To je něco, co bychom stále měli mít na srdci.

Neotřelým nápadem bylo například postavit datacentrum ze zrecyklovaných mobilů, o kterém jsem se tu už zmiňoval. Mobilní procesory mají dobrý poměr výpočetní výkon per watt a navíc není třeba vyrábět nový hardware.

Otázkou efektivity se také zabírá paper Energy Efficiency across Programming Languages.

Výsledek je celkem nepřekvapivý: Rychlejší jazyky, tedy ty ve kterých je možné napsat řešení, která vypočítá výsledek co nejrychleji, spotřebují méně energie. Jde o klasické kandidáty C, C++ a také mnohem novější Rust. Java se za nimi drží v závěsu. I když vztah mezi časem a energií není zcela lineární, kompilované jazyky jasně vedou v absolutní spotřebě joulů.

Měření byla provedena na drobných benchmarcích a nikoli velkých produkčních aplikacích. Je tedy třeba brát čísla s rezervou, jak to zmiňoval Cliff Click zmiňoval ve svém podcastu, když mluvil o srovnání Javy s C++. Například aplikace napsaná v PHP nemusí nutně spolykat 28x víc šťávy než její C protějšek, když většinu času stráví čekáním na databázi, která je napsaná ve vysoce optimalizovaném C++. Podobně tomu je s regulárními výrazy, kde i neefektivní interpretované jazyky používají rychlé regex jádro.

Když už tu píšu o efektivitě, měl bych se taky zmínit o jejím pravém opaku - o bitcoinu. Ten je největším provinilcem na poli zbytečně propálené energie. Dnes celá síť spolyká víc energie než dokáže vyprodukovat nukleární reaktor a předpokládá se, že v roce to bude víc než celé Dánsko. To je děsivé číslo. Naštěstí se začínají objevovat návrhy jak bitcoinu podobnou síť použít ke smysluplné práci.

píše k47 (@kaja47, k47)