Acovea

Screenshot Software:
Acovea
Mga detalye ng Software:
Bersyon: 1.0.1
I-upload ang petsa: 3 Jun 15
Nag-develop: Scott Robert Ladd
Lisensya: Libre
Katanyagan: 76

Rating: 3.0/5 (Total Votes: 2)

Acovea nagpapatupad ng isang genetic algorithm para sa paghahanap ng mga pagpipilian sa "best" para sa pag-ipon ng mga programa sa GCC C at C ++ compiler.
ACOVEA (Pagsusuri ng Compiler Opsyon sa pamamagitan ng sa gitna ng ebolusyon algorithm) nagpapatupad ng isang genetic algorithm upang mahanap ang mga pagpipilian sa "best" para sa pag-ipon ng mga programa sa GNU Compiler Collection (GCC) C at C ++ compiler.
"Best", sa ganitong konteksto, ay tinukoy bilang mga opsyon na gumawa ng pinakamabilis na mga maipapatupad na programa mula sa isang naibigay na source code. Acovea ay isang C ++ framework na maaaring pinalawak upang subukan ang iba pang mga wika programming at mga di-GCC compiler.
Makita sa kaisipan ko Acovea bilang isang optimization tool, na katulad sa mga layunin sa profiling. Traditional function-level profiling kinikilala ang mga algorithm pinaka-makapangyarihan sa pagganap ng isang programa; Acovea pagkatapos ay inilapat sa mga algorithm upang mahanap ang mga compiler flags at mga pagpipilian na bumuo ng ang pinakamabilis na code.
Acovea ay kapaki-pakinabang para sa pagsubok ng mga kumbinasyon ng mga flags para pesimista mga pakikipag-ugnayan, at para sa pagsusuri ng pagiging maaasahan ng compiler din.
Modern software ay mahirap na maunawaan at i-verify sa pamamagitan ng tradisyunal na paraan. Milyun-milyong mga linya ng code gumawa ng mga aplikasyon na naglalaman ng masalimuot na pakikipag-ugnayan, defying simpleng paglalarawan o taong malupit na puwersa imbestigasyon.
A guided, deterministic diskarte sa pagsubok ay nakasalalay sa human tagasubok na makita ang lahat ng posibleng mga kumbinasyon ng mga aksyon - isang unrealistic panukala naibigay software kumplikado. Gayon pa man, sa kabila ng na kumplikado, kailangan namin ng mga kasagutan sa mga mahahalagang katanungan tungkol sa mga modernong, malakihan software.
Anong uri ng mga mahahalagang katanungan? Isaalang-alang ang GNU Compiler Collection. Isulat ko ang mga artikulo na benchmark code generation, isang gawain puno na may mga kahirapan dahil sa hindi mabilang na mga opsyon na ibinigay sa pamamagitan ng iba't-ibang mga compiler. Para sa aking mga huwaran na magkaroon ng anumang kahulugan, kailangan kong malaman kung aling mga kumbinasyon ng mga opsyon gumagawa ang pinakamabilis na code para sa isang naibigay na application.
Paghahanap ng mga "best" na hanay ng mga pagpipilian sa tunog tulad ng isang simpleng gawain, ibinigay ang lawak ng babasahin GCC at ang mga maginoo karunungan ng mga developer ng komunidad GCC. Ah, kung ito ay lamang kaya madaling! Ang mga babasahin GCC, habang ang malawak, ay isa ring matapat imprecise.
Pinapahalagahan ko ang estilo ng babasahin; hindi katulad ng maraming mga komersyal na vendor, na gumawa ng absolute pahayag tungkol sa "kalidad" ng kanilang mga produkto, documenters GCC ni aminin uncertainties sa kung paano ang iba't-ibang mga pagpipilian baguhin generation code. Sa katunayan, code generation ay ganap na nakasalalay sa uri ng application na naipon at ang target na platform. May option na gumagawa ng mabilis executable code para sa isa source code ay maaaring pumipinsala sa ang pagganap ng isa pang programa.
"Maginoo karunungan" dumating sa aking inbox kapag-publish ng isang bagong artikulo. Hanggang mula sa polite sa sunud-sunod na mga bastos, mga e-mail na naglalaman ng kasalungat mungkahi para sa paggawa ng mabilis na code.
Sa karamihan ng mga kaso, tulad ng hindi-maaasahang assertions kakulangan ng anumang pormal na patunay ng kanilang bisa, at, mas madalas kaysa sa hindi, ang mga iminungkahing "pagpapabuti" ay hindi epektibo o masama. Ito ay naging unting kitang-kita na walang --myself kasama - tiyak na alam kung paano nagtutulungan ang lahat ng mga GCC opsyon sa pagbuo ng code na programa.
Hangad ko ang Banal na Kopita ng Optimization - ngunit nang eksakto kung ano ang optimization? Ang pag-unawa ang problema ay ang unang hakbang sa paghahanap ng solusyon.
Susubok Optimization upang makabuo ng "best" machine code mula sa source code. Ay nangangahulugan ng "Best" iba't ibang bagay sa iba't ibang mga application; a pala database chunks ng impormasyon, habang ang isang application na pang-agham ay nababahala sa mabilis at tumpak na mga resulta; ang unang pag-aalala para sa isang naka-embed na system ay maaaring size code.
At ito ay ganap na posible na ang mga maliliit na code ay mabilis, o tumpak fast code. Optimization ay malayo mula sa pagiging isang eksaktong agham, binigyan ng pagkakaiba-iba ng hardware at software kumpigurasyon.
Ang optimization algorithm ay maaaring maging kasing simple ng pag-alis ng isang loop invariant, o bilang kumplikadong bilang ng pagsusuri ng isang buong programa upang puksain ang global karaniwang sub-expression. Baguhin Maraming optimizations ano ang mga programmer ay nagsulat sa isang mas mahusay na form, paggawa ng parehong resulta habang binabago pinagbabatayan detalye para sa kahusayan; iba pang "optimizations" makabuo ng code na gumagamit ng mga tiyak na mga katangian ng ang batayan ng hardware, tulad ng mga espesyal na set ng pagtuturo.
Architecture na Memory, pipelines, on- at off-chip cache - lahat makakaapekto sa pagganap ng code sa mga paraan na hindi halata sa programmers sa paggamit ng wika sa mataas na antas. Ang optimization na maaaring mukhang upang makabuo ng mas mabilis na code ay maaaring, sa katunayan, lumikha ng malaking code na nagiging sanhi ng mas maraming mga misses cache, kaya nakalalait na pagganap.
Kahit na ang pinakamahusay na kamay-tono na pagsasaayos ng C code ay naglalaman ng mga lugar ng kahulugan; walang absolute, isa-sa-isang sulat sa pagitan ng C pahayag at mga tagubilin machine. Halos anumang pagkakasunod-sunod ng source code maaaring naipon sa iba't-ibang - ngunit functionally katumbas - pagtuturo machine sapa na may iba't ibang mga sukat at mga katangian ng pagganap.
Pag-inline function ay isang klasikong halimbawa ng mga ito phenomena: ang pagpapalit ng isang tawag sa isang function na may ang function code mismo ay maaaring gumawa ng isang mas mabilis na programa, ngunit maaari ring dagdagan ang laki ng program. Nadagdagan size program, maaaring, sa pagliko, maiwasan ang isang algorithm mula umaangkop sa loob ng high-speed cache memory, kaya pagbagal ng isang programa dahil sa cache misses.
Pansinin ang aking paggamit ng weasel salita "ay maaring" - inlining maliit na function minsan ay nagbibigay-daan sa iba pang mga algorithm optimization ng isang pagkakataon upang mapabuti ang code para sa lokal na mga kondisyon, paggawa ng mas mabilis at mas maliit code.
Optimization ay hindi simple o halata, at mga kumbinasyon ng mga algorithm ay maaaring humantong sa mga hindi inaasahang resulta. Na nagdadala sa akin pabalik sa tanong: Para sa anumang naibigay na application, ano ang mga pinaka-epektibong mga pagpipilian sa optimization?
Ano ang Bago sa Paglabas na ito:
· Minor mga pagbabago sa mga non-free na lisensya.
· Support ay idinagdag para sa pinakabagong bersyon ng libcoyotl at libevocosm.

Katulad na software

zope_fixtures
zope_fixtures

20 Feb 15

QSnipps
QSnipps

12 May 15

Fixtures
Fixtures

14 Apr 15

TestLink
TestLink

20 Feb 15

Iba pang mga software developer ng Scott Robert Ladd

Acovea/GTK
Acovea/GTK

3 Jun 15

Mga komento sa Acovea

Mga Komento hindi natagpuan
Magdagdag ng komento
I-sa mga imahe!