Energetická spotřeba na software je definován v počítači v závislosti na systémech, které ji tvoří. K omezení spotřeby softwaru lze použít několik vývojových principů . Dnes, s množstvím výpočetních zařízení používaných každý den, od datového centra po smartphone , je úspora energie důležitější než kdykoli předtím.
Celosvětově se odhaduje, že výpočetní zařízení spotřebovávají 5,3% celkové elektřiny. I přes toto nízké procento to odpovídá značnému množství energie a sebemenší úspora této spotřeby by mohla umožnit její snížení s pozitivním dopadem na ekologii a ekonomiku .
Existuje několik způsobů, jak snížit spotřebu. Jedním z přístupů je zlepšit spotřebu energie komponentů . Další možností je navrhnout software tak, aby spotřeboval méně. Tento přístup umožňuje snížit spotřebu bez navrhování nových zařízení, protože ztělesněná energie produkovaná konstrukcí počítače je vysoká.
Energetická spotřeba na výpočetní zařízení je definována náklady na energii potřebnou pro hardwarové komponenty plnit svůj úkol. Tato aktivita je produkována spuštěním softwaru, který je sám spojen s aktivitou uživatele.
Napájení Rychlost práce, vyjádřená ve wattech ⇒ . Energie Integrál času a síly, vyjádřený v joulech ⇒ .Energetické náklady hardwarových komponent jsou řízeny softwarem, a proto existuje několik způsobů, jak snížit celkovou spotřebu hardwaru používáním softwaru. Zde je jen několik z nich.
Byla provedena studie definující energetické profily tříd typů Collection v Javě. Tato studie ukazuje, že výběr nevhodné třídy Collection může zvýšit spotřebu energie o 300%, zatímco výběr vhodné třídy může snížit spotřebu o 38%.
Java je jazyk široce používaný ve světě softwaru díky své přenositelnosti, což z něj činí jazyk působící v oblasti spotřeby energie. Studie naznačuje, že při spuštění programu Java spotřeba energie souvisí s prováděnými operacemi, nikoli s využitím paměti. Tyto smyčky , čímž nepřímo Třídy takové sbírky, silně ovlivňují složitost operací v daném programu.
K měření spotřeby energie v joulech byla na smartphonu s Androidem použita infrastruktura GreenMiner . Byla vytvořena prázdná aplikace, na které byly spuštěny testy jednotek JUnit. Tyto testy analyzují konkrétní případy použití sbírek u položek 1 až 5 000 položek s 13 různými velikostmi seznamu.
Tato studie byla provedena na následujících knihovnách: Java Collections Framework (JCF), (ACC) a Trove, na seznamech , asociativních polích a sadách .
Hodnocení Vložení na začátek seznamuKořeny stromů (ACC) se spotřebuje více než ostatní, například na 5000 prvků to znamená spotřeba téměř 7 joulů , zatímco ostatní jsou zhruba mezi 1 a 2,5 joulů .
Seznam Chained (CF) má nejlepší spotřebu všech velikostí seznamu.
Ostatní typy sbírek mají podobné skóre až do 2 000 položek a poté vykazují mírný rozdíl u větších velikostí. Následují typy kolekcí od nejvyšší spotřeby po nejnižší: array (JCF), TIntArrayList (Trove), TIntLinkedList (Trove).
Vložení uprostřed seznamuTIntLinkedList spotřebovává více než ostatní, například u 5 000 prvků to znamená spotřebu blízkou 25 joulům , zatímco ostatní jsou zhruba mezi 0 a 10 joulů .
TIntArrayList a pole (JCF) jsou nejméně náročné a jsou blízké spotřebě alespoň 5 000 prvků (mezi 0 a 3 jouly) .
Ostatní jsou mezi 5 a 10 jouly .
Vložení na konec seznamuKořeny stromů (ACC) se spotřebuje více než ostatní, například na 5000 prvků to znamená spotřeba téměř 7 joulů , zatímco ostatní jsou zhruba mezi 0 a 2 joulů .
TIntArrayList, TIntLinkedList, pole a zřetězený seznam jsou nejméně náročné a mají blízkou spotřebu alespoň do 5 000 prvků (mezi 0 a 2 jouly ). Stále vidíme, že TIntArrayList je většinou nejnižší ve spotřebě.
Iterovat přes seznamVšechny sbírky mají velmi podobnou spotřebu energie, u 5 000 prvků se pohybují mezi 8 a 10 jouly .
Náhodný přístup do seznamuTIntLinkedList spotřebovává více než ostatní, například při 5 000 prvcích to znamená spotřebu větší než 30 joulů , zatímco ostatní jsou zhruba mezi 5 a 15 jouly .
TIntArrayList, pole (JCF) a kořenový strom (ACC) jsou nejméně náročné a mají blízkou spotřebu až do alespoň 5 000 prvků (mezi 5 a 10 jouly ).
Připoutaný seznam se pohybuje mezi 10 a 15 joulů .
RozvahaČlánek hodnotil kvalitu spotřeby kolekce od 1 pro nejlepší po 6 pro nejhorší, zde jsou výsledky:
Vložení | Opakování | Náhodný přístup | |||
---|---|---|---|---|---|
Na začátku | Mezi | Na konci | |||
Prkno | 4 | 2 | 3 | 1 | 2 |
TIntArrayList | 3 | 1 | 1 | 2 | 1 |
Zřetězený seznam | 1 | 3 | 4 | 2 | 3 |
TIntLinkedList | 2 | 5 | 2 | 2 | 3 |
Zakořeněný strom | 5 | 4 | 5 | 3 | 3 |
Vložení | Opakování | Žádost | |
---|---|---|---|
Hašovací stůl | 1 | 1 | 1 |
TIntHashMap | 2 | 2 | 2 |
HashedMap | 2 | 2 | 2 |
LinkedHashMap | 2 | 2 | 2 |
LinkedMap | 3 | 2 | 2 |
TreeMap | 4 | 2 | 3 |
Vložení | Opakování | Žádost | |
---|---|---|---|
HashSet | 2 | 1 | 1 |
Sada TIntHash | 1 | 1 | 1 |
MapBackedSet | 4 | 1 | 1 |
LinkedHashSet | 3 | 1 | 1 |
ListOrderedSet | 5 | 1 | 1 |
TreeSet | 6 | 1 | 2 |
Obecně řečeno, TIntArrayList je nejlepší seznam následovaný polem , hash tabulka je nejlepší asociativní pole a HashSet je nejlepší sada následovaná TIntHashSet.
Byla provedena studie na chytrých telefonech , která měřila jejich spotřebu podle určitých třídicích algoritmů . Problém je v tom, že palubní zařízení často fungují na baterie a jejich životnost proto závisí na energii spotřebované jejich součástmi. Studie se zaměřuje na třídicí algoritmy, které nepoužívají pouze uživatelé přímo, ale také nepřímo jinými algoritmy, měřením spotřeby energie CPU a paměti.
Quicksort je třídění algoritmus standardní několik knihoven a jazyky . Existuje silné přesvědčení, že spotřeba energie přímo závisí na výkonu softwaru, ale mají dopad i další faktory, jako je využití paměti nebo rekurze. Pokusy provedené v této studii ukazují, že rychlé třídění může být nejrychlejší, ale neméně energeticky náročné.
Algoritmy studovány:
Výsledek spotřebitel joulů na třídění algoritmy jako procesory ATmega 16, 32 a 128:
ATMega 16 | ATMega 32 | ATMega 128 | |
---|---|---|---|
Rychlé třídění | 1,76 | 2.81 | 6.29 |
Rekurzivní rychlé třídění | 0,29 | 1,74 | 1.34 |
Třídit podle haldy | 2.32 | 2.40 | 1.42 |
Seřadit podle výběru | 4.58 | 4,80 | 7,35 |
Řadit podle vložení | 0,85 | 0,89 | 0,19 |
Třídění bublin | 3.32 | 3.47 | 5.01 |
Rekurzivní sloučení | n / A | 2.52 | 3,79 |
Sloučit třídění | 1.21 | 1.26 | 1,77 |
Třepačka / koktejl | 1.24 | 1.29 | 0,12 |
Třídění skořápky | 1.19 | 1.25 | 0,87 |
Výsledek doby provádění třídicích algoritmů podle procesorů ATMega 16, 32 a 128 v milisekundách :
ATMega 16 | ATMega 32 | ATMega 128 | |
---|---|---|---|
Rychlé třídění | 2520 | 259640 | 237534 |
Rekurzivní rychlé třídění | 33120 | 32240 | 201220 |
Třídit podle haldy | 224920 | 224920 | 224920 |
Seřadit podle výběru | 442040 | 444120 | 443720 |
Řadit podle vložení | 81640 | 81600 | 81640 |
Třídění bublin | 321320 | 321220 | 321220 |
Rekurzivní sloučení | 44920 | 233920 | 233920 |
Sloučit třídění | 118400 | 118400 | 118400 |
Třepačka / koktejl | 117400 | 117400 | 117400 |
Třídění skořápky | 115800 | 115800 | 115800 |
Studie ukazuje, že nakonec má využití paměti dopad na spotřebu energie. Algoritmy jako třídění vložením jsou však efektivnější než jiné.
Další přístup, který experimenty ukázaly, je, že použité datové typy mají dopad na spotřebu, například typy s plovoucí desetinnou čárkou spotřebovávají více než celočíselné typy .
Návrhový vzor v softwarové architektury je uspořádání rolí a činností stanovených modulů. Tyto vzory , uznané designéry a programátory, popisují procesy, které umožňují organizovat a strukturovat projekt.
Aby bylo možné posoudit spotřebu energie u těchto různých vzorů , zřídilo několik studií zkušební stolice. Vyvinuli nástroj vyrobený z FPGA a počítače pro přesné měření kolísání energie.
HodnoceníKaždá část kódu před a po použití návrhového vzoru byla několikrát provedena za účelem získání konzistentních dat. Zde jsou výsledky:
Návrhový vzor | Spotřeba dříve
(v joulech) |
Spotřeba po
(v joulech) |
Procentní rozdíl |
---|---|---|---|
Abstraktní továrna | 87,78 | 106,69 | 21,55 |
Editor | 111,75 | 113,08 | 1.19 |
Vyrobeno | 118,13 | 118.06 | -0,07 |
Prototyp | 99,60 | 98,68 | -0,93 |
jedináček | 98,70 | 99.11 | 0,42 |
Most | 99,78 | 99,54 | -0,24 |
Složený objekt | 97,15 | 102,14 | 5.14 |
Natěrač | 13,92 | 113,13 | 712,89 |
Muší váha | 92,89 | 38,94 | -58,08 |
Proxy | 104,33 | 66,28 | -36,47 |
Objednané | 98,32 | 96,53 | -1,82 |
Prostředník | 120,55 | 109,02 | -9,56 |
Pozorovatel | 61,62 | 99,95 | 62.20 |
Strategie | 115,73 | 115,52 | -0,18 |
Návštěvník | 104,89 | 97,04 | -7,49 |
Výsledky ukazují, že většina návrhových vzorů stěží ovlivňuje spotřebu energie . Je však zajímavé poznamenat, že návrhové vzory Flyweight a Proxy šetří 58%, respektive 36% energie.
Na druhou stranu návrhové vzory Observer a Decorator spotřebují o 62%, respektive 712% více energie. Navzdory tomu je možné optimalizovat energetické využití těchto návrhových vzorů .
Observer návrhový vzor může být optimalizována tím, že sníží počet volání způsobů a přístupů do paměti pozorovaného. Méně hovorů umožní pozorovatelům být méně často informováni o pozorovaných akcích.
Konstrukce nadřízený (nebo natěrač), může být více energie efektivní vytvořením podtřídy na zdobené třídy , který bude obsahovat všechny atributy a metodami v zdobené třídy . Nahrazení konkretizace dekorovaného objektu objektem podtřídy tedy ušetří energii .
Protokol SSL je široce používán k provádění zabezpečené komunikace na internetu . SSL nabízí základní služby šifrování , autentizace zdroje a ochrany integrity vyměňovaných dat. Často se používá jako softwarové překrytí, aby se zabránilo velkým změnám aplikačního protokolu, jako je HTTP . Tento protokol se často používá, jeho spotřeba energie musí být nízká, protože jej používá jakýkoli typ zařízení, včetně zařízení vybavených bateriemi, a proto s nízkou autonomií.
Za účelem měření dopadu SSL na spotřebu energie byla během studií o spotřebě energie bezpečnostních protokolů zřízena zkušební stolice. Skládá se z kapesního počítače pod Linuxem přímo připojeného k měřicímu zařízení. Handheld , který slouží jako klient komunikuje přímo se serverem pomocí protokolu SSL implementace tohoto OpenSSL projektu . Zákazník je neustále připojen, aby udržoval baterii na stejné úrovni nabití, aby byla měření konzistentní.
HodnoceníNejprve se analýza zaměřuje na spotřebu energie u různých velikostí výměny SSL . Výsledky naznačují, že s menšími výměnami, 256 kilobajty , ověřování mezi klientem a serverem využívá 98,9% energie , zbytek se používá k šifrování fáze výměny. Další výměna je velké, až 1 mega byte , a šifrování fáze bude konzumovat, s touto velikostí zpráv, si uvědomíme, že fáze ověřování spotřebuje více než 19,6% celkové spotřeby.
Nicméně, fáze ověřování a šifrování výměny využívající mnoho algoritmů z kryptografie , která nás zajímá zde je použití SSL . Proto byla provedena měření k určení čisté spotřeby SSL . Tři velikosti si vyměňují 1 kilobajt , kilo - 100 bajtů a 1 mega bajt , výsledky ukazují, že SSL spotřebovává 41% až 45,8% z celkové energie použité při výměnách. Zbytek používají různé šifrovací algoritmy .
Ověřování lze provádět různými způsoby pomocí různých šifrovacích algoritmů, studie ukazuje, že v závislosti na velikosti výměny se spotřeba energie ověřování liší v závislosti na použití šifrování RSA nebo kryptografie na eliptických křivkách a dokonce podle různých verzí tyto. Pro malé zprávy, méně než 20 kilos- bajtů , je výhodnější použít verzi ECC-3DES, SHA na eliptické křivky kryptografie , u větších zpráv je výhodnější použít verzi RSA -RC5-SHA1 z RSA šifrování .
RozvahaStudie ukazuje, že pro úsporu energie je nutné měnit několik parametrů, kterými jsou: