Acovea

Software screenshot:
Acovea
Podrobnosti Software:
Verze: 1.0.1
Datum uploadu: 3 Jun 15
Licence: Volný
Popularita: 76

Rating: 3.0/5 (Total Votes: 2)

Acovea realizuje genetický algoritmus pro nalezení "nejlepší" možnosti pro kompilaci programy s GCC C a C ++ kompilátory.
Acovea (Analýza možnosti kompilátoru přes evoluční algoritmus) realizuje genetický algoritmus najít "nejlepší" možnosti pro kompilaci programy s GNU Compiler Collection (GCC), C a C ++ kompilátory.
"Nejlepší", v tomto kontextu, je definována jako ty možnosti, které produkují nejrychlejší spustitelný program z daného zdrojového kódu. Acovea je C ++ framework, který může být rozšířena na testování jiné programovací jazyky a non-GCC kompilátory.
Já si představit Acovea jako optimalizační nástroj, podobný v účelu k profilování. Tradiční funkce na úrovni profilování identifikuje algoritmy nejvlivnější ve výkonnosti programu; Acovea je pak aplikován na ty algoritmy najít kompilátoru příznaky a možnosti, které generují nejrychlejší kód.
Acovea je také užitečné pro testování kombinací přepínačů pro pesimistické interakce, a pro testování spolehlivosti kompilátoru.
Moderní software je obtížné pochopit, a ověřit tradičními prostředky. Miliony řádků kódu produkovat aplikace obsahující složité interakce, vzpírat jednoduchý popis nebo brute-force vyšetřování.
Průvodcem, deterministický přístup k testování spoléhá na lidské testery, aby si představit všechny možné kombinace akcí - což je nerealistický návrh danou složitost software. Přesto, navzdory tomuto složitost, potřebujeme odpovědi na důležité otázky týkající se moderní, ve velkém měřítku software.
Jaké důležitých otázek? Zvažte gcc. I psát články, že měřítko generování kódu, úkol plný obtížemi kvůli nesčetných možností, které nabízí různé kompilátory. Pro mé měřítka mít nějaký význam, musím vědět, které kombinace možností vytváří nejrychlejší kód pro danou aplikaci.
Nalezení "nejlepší" sadu možností zní jako jednoduchý úkol, vzhledem k rozsahu GCC dokumentace a konvenční moudrost komunitě vývojářů GCC. Ach, kdyby to bylo jen tak jednoduché! Dokumentace GCC, zatímco rozsáhlý, je také upřímně nepřesná.
Vážím si tento styl dokumentace; na rozdíl od mnoha komerčních dodavatelů, kteří tvoří absolutní výroky o "kvalitě" svých výrobků, GCC dokumentaristy přiznat nejasnosti v tom, jak různé možnosti mění generování kódu. Vskutku, generování kódu je zcela závislá na typu aplikace je sestavena a cílové platformě. Možnost, že produkuje rychlý spustitelný kód pro jeden zdrojový kód, může být na újmu plnění jiného programu.
"Konvenční moudrost" dorazí v mé e-mailové schránky, když jsem zveřejnil nový článek. Sahat od zdvořilé neústupný na hrubý, tyto e-maily obsahují protichůdné návrhy pro výrobu rychlý kód.
V drtivé většině případů jsou tyto neoficiální tvrzení postrádají jakýkoli formální důkaz o jejich platnosti, a častěji než ne, navrhl, "zlepšení" je neúčinné nebo škodlivé. To se stává stále více zřejmé, že nikdo --myself v ceně - ví přesně, jak všechny tyto GCC možnosti spolupracovat při generování programového kódu.
I hledat svatý grál Optimization - ale přesně to, co je optimalizace? Pochopení problému je prvním krokem při hledání řešení.
Optimalizace se pokouší vyrobit "nejlepší" strojového kódu ze zdrojového kódu. "Nejlepší" znamená různé věci pro různé aplikace; databázi lopaty kusy informací, zatímco vědecká aplikace je zaměřen na rychlé a přesné výsledky; První starostí pro vestavěný systém, může být velikost kódu.
A to je docela možné, že malé kód je velmi jednoduché, nebo rychle kód přesné. Optimalizace je zdaleka exaktní věda, vzhledem k rozmanitosti hardwarových a softwarových konfigurací.
Optimalizační algoritmus může být stejně jednoduché jako odstranění smyčka neměnný, nebo jako komplex jako posuzování celý program na odstranění globální společné sub-výrazy. Mnoho optimalizace změnit to, co programátor napsal do efektivnější formu, produkovat stejný výsledek, zatímco kterým se upravují základní údaje o účinnosti; ostatní "optimalizace" produkují kód, který používá specifické vlastnosti hardwarem, jako jsou například speciální instrukční sady.
Paměťové architektury, potrubí, On-a Off-chip cache pamětí - vše mít vliv na výkon kódu v způsoby, které nejsou zřejmé programátory používající jazyk na vysoké úrovni. Optimalizace se může zdát, že k výrobě rychlejší kód může ve skutečnosti, vytvářet velké kód, který způsobí, že více mezipaměti mine, čímž snižují výkonnost.
Ani nejlepší ruka-ladil C kód obsahuje oblasti interpretace; neexistuje absolutní, one-to-one korespondence mezi prohlášení C a strojových instrukcí. Téměř každý sled zdrojového kódu může být sestaven na odlišný - ale funkčně ekvivalentní - strojová instrukce proudy s různými velikostmi a výkonnostních charakteristik.
Inlining funkce je klasický příklad tohoto jevu: nahrazení volání funkce s funkčním kódem sám může produkovat rychlejší program, ale může také zvýšit velikost programu. Zvýšená velikost programu, se mohou, podle pořadí, zabránit algoritmu od instalace do vysokorychlostní vyrovnávací paměti, a tím zpomaluje program, vzhledem k vyrovnávací paměti mine.
Všimněte si, moje použití lasička slova "může" - inlining malé funkce někdy umožňuje dalším optimalizačních algoritmů šanci dále zlepšit kód pro místní podmínky, produkovat rychlejší a menší kód.
Optimalizace není jednoduchý ani zřejmá, a kombinace algoritmů může vést k neočekávaným výsledkům. Což mě přivádí zpět k otázce: Pro danou aplikaci, jaké jsou nejúčinnější možnosti optimalizace?
Co je nového v této verzi:
· Drobné změny v non-free licencí.
· Byla přidána podpora pro nejnovější verze libcoyotl a libevocosm.

Podobný software

nose-html-output
nose-html-output

20 Feb 15

GCViewer
GCViewer

3 Jun 15

BDD4Django
BDD4Django

20 Feb 15

nosy
nosy

11 May 15

Ostatní software developer Scott Robert Ladd

Acovea/GTK
Acovea/GTK

3 Jun 15

Komentáře k Acovea

Komentáře nebyl nalezen
Přidat komentář
Zapnout obrázky!