Acovea

Software screenshot:
Acovea
Software ətraflı:
Version: 1.0.1
Tarixi Upload: 3 Jun 15
Geliştirici: Scott Robert Ladd
Lisenziya: Pulsuz
Məşhurluq: 76

Rating: 3.0/5 (Total Votes: 2)

Acovea GCC C və C ++ derleyiciler proqramları tərtib üçün "ən yaxşı" variantları tapmaq üçün bir genetik alqoritm həyata keçirir.
ACOVEA (Evolutionary alqoritmi vasitəsilə Kompilyator Seçimlər Analiz) GNU Kompilyator Collection (GCC) C və C ++ derleyiciler proqramları tərtib üçün "ən yaxşı" variantları tapmaq üçün genetik alqoritm həyata keçirir.
"Ən yaxşı", bu çərçivədə bir mənbə kodu ən sürətli çalıştırılabilir proqram istehsal bu variantları kimi müəyyən edilir. Acovea digər proqramlaşdırma dilləri və qeyri-GCC derleyiciler test uzadıla bilər C ++ çərçivəsində edir.
Mən profilləmə məqsədilə bənzər bir optimizasyon vasitəsi kimi Acovea nəzərdə tutur. Ənənəvi funksiyası səviyyədə profilləmə bir proqramın icrası ən nüfuzlu alqoritmlər müəyyən edir; Acovea sonra sürətli kodu yaratmaq compiler bayraqları və variantları tapmaq üçün bu alqoritmləri tətbiq edilir.
Acovea də bədbin qarşılıqlı və compiler etibarlılığı test üçün bayraqları birləşməsi test üçün faydalıdır.
Müasir proqram anlamaq və ənənəvi vasitələrlə yoxlamaq çətindir. Kodu xətləri milyonlarla applications sadə təsviri və ya qaba-güc istintaq defying, mürəkkəb qarşılıqlı olan istehsal edir.
Bu proqram mürəkkəbliyi verilən real təklifi - test üçün idarəolunan, deterministic yanaşma tədbirlər hər mümkün birləşməsi nəzərdə tutur insan test əsaslanır. Lakin, ki, mürəkkəbliyinə baxmayaraq, biz müasir, geniş miqyaslı proqram haqqında mühüm suallara cavab lazımdır.
Mühüm suallara hansı? GNU Compiler Kolleksiya düşünün. Mən müxtəlif derleyiciler ilə təmin saysız-hesabsız variantları məqalələr benchmark kodu nəsil, çətinliklərlə dolu bir vəzifə yazın. Mənim standartlar bir mənası var, mən bir tətbiqi üçün sürətli kodu istehsal variantları hansı birləşməsi bilmək lazımdır.
Variantları "ən yaxşı" set tapmaq GCC sənədlərin dərəcədə və GCC geliştirici ictimaiyyətin şərti hikmət verilmiş, bir sadə məsələ kimi səslənir. Ah, yalnız belə asan olsaydı! GCC sənədlər, geniş edərkən, həm də vicdanla qeyri-dəqiq deyil.
Mən sənədlərin bu stil qiymətləndirirəm; öz məhsullarının "keyfiyyəti" haqqında mütləq bəyanatlar çox kommersiya vendorların, GCC-nin documenters kodu nəsil dəyişdirmək necə müxtəlif variantları qeyri-müəyyənliklər etiraf. Həqiqətən, kodu nəsil tərtib edildikdən proqram növü və hədəf platforma tamamilə asılıdır. Bir mənbə kodu sürətli yürütülebilir kodu çıxaran bir seçim başqa bir proqram icrası üçün zərərli ola bilər.
Mən yeni məqalə dərc zaman "Adi hikmət" mənim inbox gəlib. Nəzakətli kobud üçün israrlı qədər, bu e-poçt sürətli kodu istehsalı üçün ziddiyyətli təkliflər ehtiva edir.
Əksər hallarda, belə Diqqətəlayiq iddialar daha çox heç-dən, onların qüvvədə olma hər hansı bir formal sübut yoxdur, və təklif "təkmilləşdirilməsi" səmərəsiz və ya zərərli deyil. Bütün bu GCC variantları proqram kodu yaradan birlikdə iş necə dəqiq bilir - Bu daxil --myself heç kim ki, getdikcə daha aydın oldu.
Mən Optimization Müqəddəs Grail axtarmaq - ancaq optimallaşdırma dəqiq nədir? Problem Anlaşma həlli ilk addımdır.
Optimization mənbə kodu "ən yaxşı" maşın kodu istehsal çalışır. "Ən yaxşı" müxtəlif applications fərqli şeylər deməkdir; elmi proqram sürətli və dəqiq nəticələri ilə bağlı isə məlumat bazası kürəkləri chunks; əlaqədar sistemi üçün ilk narahatlıq kodu ölçüsü ola bilər.
Və kiçik code sürətli, və ya sürətli code dəqiq ki, mümkündür. Optimization hardware ve proqram konfigürasyonlarına müxtəlifliyi nəzərə alaraq, uzaq bir dəqiq elm deyildir.
Bir optimallaşdırma alqoritm bir loop invariant, və ya qlobal ümumi sub-ifadələr aradan qaldırılması üçün bütün proqram araşdıran kimi mürəkkəb aradan qaldırılması kimi sadə ola bilər. Bir çox optimallaşdırılması proqramçı səmərəliliyi üçün əsas detalları dəyişdirilməsi isə eyni nəticə istehsal, daha səmərəli formaya nə yazdı dəyişdirmək; xüsusi təlimat dəsti kimi əsas hardware xüsusi xüsusiyyətləri istifadə digər "optimallaşdırılması" məhsullarının kodu.
Yaddaş memar, boru kəmərləri, on-və off-chip önbelleğe - bütün yüksək səviyyəli dil istifadə proqramçılar aydın olmayan yollarla kodu performansını təsir. , Əslində, daha cache misses səbəb böyük kodunu beləliklə ləyaqəti alçaldan performans yarada bilər daha sürətli kodu istehsal görünə bilər bir optimizasyon.
Hətta ən yaxşı əl-ayarlanmış C kodu şərhi sahələri ehtiva edir; C hesabatları və maşın təlimatlar arasında mütləq bir-to-bir qiyabi var. Demək olar ki, mənbə kodu hər hansı bir ardıcıllıqla müxtəlif daxil tərtib edilə bilər - lakin funksional ekvivalent - maşın təlimat müxtəlif ölçülü və performans xüsusiyyətləri ilə axınları.
Daha sürətli proqram istehsal edə bilər funksiyası kodu özü ilə bir funksiyası zəng əvəz, həm də proqram ölçüsü artıra bilər: funksiyaları Inlining bu hadisələrin bir klassik nümunəsidir. Artan proqram ölçüsü, öz növbəsində, belə görə cache isabetsizlik üçün bir proqram yavaşlatan, yüksək sürətli cache yaddaş daxilində uyğun bir alqoritm mane ola bilər.
Weasel söz mənim istifadə edək "may" - kiçik funksiyaları inlining bəzən digər optimallaşdırılması alqoritmləri daha sürətli və daha kiçik code istehsal, yerli şərait üçün kodu yaratmaq üçün bir şans verir.
Optimization sadə və ya aydın deyil, və alqoritmlərin birləşməsi gözlənilməz nəticələrə gətirib çıxara bilər. Hansı sual mənə geri gətirir: hər hansı bir proqram üçün ən effektiv optimallaşdırma variantları hansılardır?
Bu Release Yenilikler:
· Qeyri-pulsuz lisenziya Kiçik dəyişikliklər.
· Support libcoyotl və libevocosm son versiyasını üçün əlavə edildi.

Oxşar proqram

NoseKay
NoseKay

11 May 15

PytestFramework
PytestFramework

20 Feb 15

iogen
iogen

2 Jun 15

nose-selecttests
nose-selecttests

20 Feb 15

Geliştirici digər proqram Scott Robert Ladd

Acovea/GTK
Acovea/GTK

3 Jun 15

Şərh Acovea

Şərhlər tapılmadı
Şərh əlavə
Images yandırın!