Melyik programozási nyelv mennyire energiahatékony?

3 portugál egyetem összesen 6 kutatója végzett elemzést a különböző programozási nyelveken megírt programok energia- futásidő- és memóriahatékonyságáról. Az ő tudományos cikkükből készített kivonatot a TheNewStack.

A blogbejegyzés megértéséhez szükség van néhány alapfogalom ismeretére: A programokat a programozók egy szövegszerkesztőhöz hasonló programmal írják meg (az irományuk a forráskód), amelyet vagy egy másik program (fordító) alakít át számítógép által értelmezhető formára (“egyesek és nullák” – gépi kód), amit egy fájlban eltárol, vagy a másik program fogja egyesével beolvasni és értelmezni és végrehajtani a megírt forráskódot (értelmező). A két megoldás között félúton vannak az ún. virtuális gépes nyelvek (ilyen a Java is), melyeknél mindkét irányzat megjelenik. A leggyorsabbak a fordított nyelvek, majd a virtuális gépes nyelvek, legrosszabb teljesítményt az értelmezett nyelvek produkálják.

Néhány megállapítás nem volt meglepő:

  1. minden listában elől a fordított nyelvek, a középmezőnyben a virtuális gépes nyelvek, hátul az értelmezett nyelvek végeztek – mi is ugyanezt tanítjuk
  2. Az élmezőnyben a C és C++ is benne volt – ha sebességkritikus alkalmazást írsz, akkor ezek a nyelvek mindenképpen opcióként jelennek meg – nem véletlen, hogy a top 3D játékok “engine-jét” sem Pythonban, hanem C++-ban írják

De volt néhány számomra is meglepő eredmény:

  1. a Java futásidőben is és energiahatékonyságban is elől végzett. Tudom és tanítjuk is, hogy a Java esetében a virtuális gép (Java Virtual Machine) egy nagyon optimalizált környezetet teremt, aminek része az, hogy a virtuális gép folyamatosan analizálja azt, hogy mely részei futnak a programnak gyakran, és azokat a részeket futás közben lefordítja a számítógép által értelmezhető formára… A programokat többször futtatták, ami valószínűleg a virtuális gépnek elegendő volt az ilyesfajta optimalizáláshoz. De azon, hogy ezt ennyire hatékonyan teszi, meglepődtem.
  2. A Java lett a legenergiahatékonyabb és leggyorsabb virtuális gépes nyelv
  3. Korunk egyik egyre népszerűbb programozási nyelve – a Python – pedig ennyivel rosszabb teljesítményt nyújtott – a Javához képest kb. 35-szörannyi energiát fogyasztott és kb. 35-ször lassabb volt. Azt sejtettem, hogy valamennyivel lassabb lesz, de hogy ennyivel, azt nem gondoltam volna

Természetesen nem mondom azt, hogy bárki is ezen adatok alapján válasszon programozási nyelvet tanuláshoz.
Mint ahogy az is kézenfekvő, hogy ha az ember autóvezetést akar tanulni, akkor legtöbbször nem az adott autó fogyasztása és gyorsulása alapján választ. Valószínűsítem, hogy legtöbben inkább az alapján, hogy az oktató milyen személyiségű, mennyire szimpatikus és mennyire tud oktatni. Mert miután megtanultál egy Toyota Yarison vezetni, akkor azután átszokni egy Skoda Octaviára nem tart már soká.
Ha még nem kezdtél bele vagy Java/OO tudásodban hiányokat érzel, várunk a tesztünkön!

A környezetvédelem számunkra is fontos. A szervereinket üzemeltető Hetzner Online GmbH az áramot 100%-ig megújuló forrásból fedezi.

Pasztuhov Dániel
StudiCore Kft.