Acovea

Screenshot Software:
Acovea
Detalii soft:
Versiune: 1.0.1
Incarca data: 3 Jun 15
Producător: Scott Robert Ladd
Licenţă: Gratuit
Popularitate: 76

Rating: 3.0/5 (Total Votes: 2)

Acovea implementează un algoritm genetic pentru a găsi cele mai bune "" opțiuni pentru compilarea programelor cu GCC C și C ++ compilatoare.
ACOVEA (Analiza Opțiuni Compiler prin Evolutionary Algorithm) implementează un algoritm genetic pentru a găsi "cele mai bune" opțiuni pentru compilarea programelor cu GNU Compiler Collection (GCC) C și C ++ compilatoare.
"Cel mai bun", în acest context, sunt definite ca acele opțiuni care produc cel mai rapid programul executabil dintr-un cod sursă dat. Acovea este un C ++ cadru care poate fi extins pentru a testa alte limbaje de programare și compilatoare non-CCG.
Am imagina Acovea ca un instrument de optimizare, similară în scopul de a profilurilor. La nivel de funcție tradițională de profile identifică algoritmii cei mai influenți în performanțele unui program; Acovea este apoi aplicat aceste algoritmi pentru a găsi steagurile compilator și opțiunile care generează cel mai rapid codul.
Acovea este, de asemenea, util pentru testarea combinații de steaguri pentru interactiuni pesimiste, iar pentru testarea fiabilitatea compilator.
Software moderne este greu de înțeles și de a verifica prin mijloace tradiționale. Milioane de linii de cod produc aplicații conținând interacțiuni complicate, sfidând descriere simplă sau investigație brute-force.
Un ghid, abordare deterministă de testare se bazează pe testere umane să-și imagineze toate combinațiile posibile de acțiuni - o propunere nerealista dat complexitatea software. Cu toate acestea, în ciuda faptul că complexitatea, avem nevoie de răspunsuri la întrebări importante despre software moderne, pe scară largă.
Ce fel de întrebări importante? Luați în considerare Compiler Collection GNU. Scriu articole care de referință de generare de cod, o sarcină plină de dificultăți din cauza opțiunilor nenumărate oferite de diferite compilatoare. Pentru repere mei să aibă vreun sens, vreau să știu ce combinație de opțiuni produce cel mai rapid codul pentru o anumită aplicație.
Găsirea "cel mai bun" set de opțiuni sună ca o sarcină simplă, având în vedere amploarea documentației GCC și înțelepciunea convențională a comunitatea dezvoltatorilor GCC. Ah, dacă ar fi fost doar atat de usor! Documentația CCG, în timp ce extinse, este, de asemenea sincer imprecise.
Apreciez acest stil de documentare; spre deosebire de multe vânzătorii comerciali, care fac declarații absolute despre "calitatea" produselor lor, documentelor acestora CCG admite incertitudini în modul opțiuni diferite modifica generare de cod. Într-adevăr, generarea de cod este în întregime dependentă de tipul de aplicare fiind compilate și platforma țintă. O opțiune care produce cod executabil rapid pentru un cod sursă poate fi în detrimentul performanțelor alt program.
"Intelepciunea conventionala" sosește în cutia mea poștală de fiecare dată când am publica un nou articol. Variind de la politicos să insistente la nepoliticos, aceste e-mailuri conțin sugestii contradictorii pentru producerea de cod rapid.
În marea majoritate a cazurilor, astfel de afirmații anecdotice lipsite de orice dovadă formală de valabilitate a acestora, și, cel mai adesea, a sugerat "îmbunătățire" este ineficace sau dăunătoare. A devenit tot mai evident faptul că nimeni nu --myself inclus - stie exact cum toate aceste opțiuni CCG lucreze împreună în generarea de cod de program.
Caut Sfântul Graal de optimizare - dar exact ceea ce este optimizarea? Înțelegerea problemei este primul pas în găsirea unei soluții.
Optimizarea încearcă pentru a produce "mai bun" codul mașină de la codul sursă. "Cel mai bun" înseamnă lucruri diferite pentru diferite aplicații; o bază de date lopeți bucăți de informații, în timp ce o aplicație științifică este în cauză, cu rezultate rapide si precise; prima preocupare pentru un sistem integrat poate fi dimensiunea cod.
Și este foarte posibil ca cod mic este rapid, sau codul de rapid precis. Optimizarea este departe de a fi o știință exactă, având în vedere diversitatea de configurații hardware și software.
Un algoritm de optimizare poate fi la fel de simplu ca a scoate o buclă invariant, sau atât de complex ca examinarea unui program întreg pentru a elimina comune sub-expresii globale. Multe optimizari schimba ceea programator a scris într-o formă mai eficientă, care produce același rezultat în timp ce modificarea detalii stau la eficiență; alte "optimizări" cod produse care utilizează caracteristici specifice ale hardware-ul subiacent, cum ar fi seturi de instrucțiuni speciale.
Arhitecturi de memorie, conducte, Caches on și off-chip - toate afectează performanța de cod în moduri care nu sunt evidente pentru programatori folosind un limbaj de nivel înalt. O optimizare ce poate părea pentru a produce cod mai rapid poate, de fapt, de a crea cod mare, care cauzeaza mai multe ratări cache, performanta astfel degradant.
Chiar cel mai bun cod de mână tuned C conține zone de interpretare; nu există nici o, unu-la-unu corespondenta absolută între declarațiile C și instrucțiuni mașină. Aproape orice secvență de cod sursă pot fi compilate în diferite - dar funcțional echivalent - instrucțiuni mașină fluxuri cu diferite dimensiuni și caracteristici de performanță.
Plasare inline funcții este un exemplu clasic de acest fenomen: înlocuirea unui apel la o funcție cu codul funcția în sine poate produce un program mai rapid, dar poate crește, de asemenea, dimensiunea programului. A crescut dimensiunea programului, poate, la rândul său, împiedică un algoritm de amenajare interior de mare viteză de memorie cache, încetinind astfel un program de cauza rateaza cache.
Observați utilizarea mea a cuvântului weasel "poate" - plasare inline funcții mici, uneori permite altor algoritmi de optimizare o sansa de a îmbunătăți în continuare codul pentru condițiile locale, care produc mai rapid și mai mici de cod.
Optimizarea nu este simplu sau evidentă, și combinații de algoritmi poate duce la rezultate neașteptate. Ceea ce mă aduce înapoi la întrebarea: Pentru orice aplicație dată, care sunt cele mai eficiente opțiuni de optimizare?
Ce este nou în această versiune:
· Modificări minore ale licența non-free.
· A fost adăugat suport pentru cele mai recente versiuni ale libcoyotl și libevocosm.

Software similare

PMD
PMD

9 Dec 15

snort
snort

14 Apr 15

tempdir
tempdir

11 May 15

Ahven
Ahven

15 Apr 15

Alte software-uri de dezvoltator Scott Robert Ladd

Acovea/GTK
Acovea/GTK

3 Jun 15

Comentarii la Acovea

Comentariile nu a fost găsit
Adauga comentarii
Porniţi pe imagini!