Klausimai pažymėti „kompiliatoriaus optimizavimas“

Kompiliatoriaus optimizavimas apima kompiliatoriaus pritaikymą, kad būtų sumažintas vykdymo laikas arba objekto dydis arba abu. Tai galima padaryti naudojant kompiliatoriaus argumentus (pvz., CFLAGS, LDFLAGS), kompiliatoriaus įskiepius (pavyzdžiui, DEHYDRA) arba tiesioginius kompiliatoriaus pakeitimus (pvz., Kodo keitimą).
10
atsakymai

Kodėl atskiruose cikluose stigma papildai yra daug greičiau nei kombinuotame cikle?

Tarkime, kad a1, b1, c1 ir d1 nukreipia į atmintį, o mano skaitmeninis kodas turi tokią pagrindinę kilpą. const int n = 100000; už (int j = 0; j <n; j ++) {a1 [j] + = b1 [j]; c1 [j] + = d1 [j]; } Šis ciklas atliekamas 10000 kartų a.
gruodžio 17 d '11 23:40
12
atsakymai

Kodėl GCC nesukuria * a * a * a * a * a į (a * a * a) * (a * a * a)?

Mokslinėje programoje atlieku tam tikrą skaitinį optimizavimą. Pastebėjau, kad Persijos įlankos bendradarbiavimo taryba optimizuoja skambutį (a, 2), sukompiliuoti ją į * a, bet skambutis įjungti (a, 6) nėra optimizuotas ir iš tikrųjų vadins bibliotekos funkciją pow, kuri žymiai sulėtina gamybą ...
yra nustatytas birželio 21 d. 11 val
10
atsakymai

Pakeitus 32 bitų kontūrą su 64 bitų reikšmėmis, atsiranda beprasmiški skirtumai

Aš ieškojau sparčiausių būdų išskleisti didelius duomenų masyvus. Man teko susidurti su labai keistu efektu: linijos kintamojo keitimas nuo nepasirašyto iki uint64_t lėmė 50% našumo sumažėjimą mano kompiuteryje. Benchmark #include ...
nustatyti 01 rug. '14, 13:33
9
atsakymai

Greitas beta: rūšiavimo masyvai

Aš įgyvendinau algoritmą „Swift“ beta versijoje ir pastebėjau, kad spektaklis buvo labai blogas. Žvelgiant giliau, supratau, kad viena iš kliūčių yra kažkas taip paprasta, kaip rūšiavimo masyvai. Atitinkama dalis yra čia: tegul n = 1000000 var ...
yra nustatytas birželio 08 d. 14:53
3
atsakymai

Kodėl mes naudojame kintamąjį raktinį žodį C ++?

Galimas dublikatas: C + +: kada nepastovus raktinis žodis jums visada padėjo? Aš niekada jo nenaudojau, bet man įdomu, kodėl žmonės jį naudoja? Ką jis daro? Aš ieškojau forumo, jį suradau tik „C #“ arba „Java“.
gruodžio 14 d '10, 12:14
2
atsakymai

Kas yra operacija C

#include <stdio.h> nepastovi int i; int main () {int c; (i = 0; i <3; i ++) {c = i i; printf ("% d", c); } 0; } Pirmiau nurodytos programos išvestis, sudaryta naudojant ...
gruodžio 19 d '12 9:48
3
atsakymai

Kodėl GCC sukuria tokį radikaliai skirtingą statinį beveik tokiam pačiam C kodui?

Rašydamas optimizuotą ftol funkciją, GCC rado labai keistą elgesį. 4.6.1. Leiskite pirmiausia parodyti jums kodą (aiškumo sumetimais pastebėjau skirtumus): fast_trunc_one, C: int fast_trunc_one (int i) {int mantissa, eksponentas, ženklas, r; ...
nustatytas balandžio 20 d '12 19:59
10
atsakymai

Kaip sudaryti „Tensorflow“ su SSE4.2 ir AVX instrukcijomis?

Tai yra pranešimas, gautas paleisdami scenarijų, kad patikrintumėte, ar „Tensorflow“ veikia: I tensorflow / stream_executor / dso_loader.cc: 125] sėkmingai atidarė CUDA biblioteką libcublas.so.8.0 .
gruodžio 23 d. '16, 2:21
2
atsakymai

„Nat“ tipo ribos „Shapeless“

Be formų, Nat tipas yra būdas koduoti natūralius skaičius tipo lygmeniu. Tai naudojama, pavyzdžiui, fiksuoto dydžio sąrašams. Jūs netgi galite atlikti skaičiavimus, pavyzdžiui, tipo lygmeniu. pridėti elementų sąrašą N ...
nustatytas sausio 23 d '14, 2:15
5
atsakymai

Kodėl patobulintas GCC 6 optimizatorius pertraukia praktinį C + + kodą?

GCC 6 turi naują optimizavimo funkciją: daroma prielaida, kad tai visada yra nulinė ir optimizuojama pagal tai. Vertybių diapazono paplitimas dabar reiškia, kad šis C ++ nario funkcijų rodiklis yra nulinis. Tai pašalina ...
nustatytas balandžio 27 d '16, 17:45 val
2
atsakymai

Kodėl kompiliatorius geriau optimizuoja lambdas nei paprastos funkcijos?

Savo knygoje „C ++ Standard Library (Second Edition)“ Nikolajus Josuttis teigia, kad kompiliatorius geriau optimizuoja lambdas nei paprastos funkcijos. Be to, „C ++“ kompiliatoriai geriau optimizuoja lambdas nei įprastos funkcijos. (Šalys ...
rinkinys 05 Dec '12 14:38
5
atsakymai

Kaip matyti, kurios vėliavos -march = native bus suaktyvintos?

Renku savo C + + paraišką naudojant GCC 4.3. Vietoj to, kad rankiniu būdu pasirinktumėte optimizavimo vėliavas, naudoju -march = native, kuri teoriškai turėtų pridėti visas optimizavimo žymes, taikytinas aparatūrai, kurią sukaupiau ...
nustatė kovo 29 d. 11 val
3
atsakymai

Naudojant šį rodiklį, karšto ciklo metu atsiranda keista deoptimizacija.

Neseniai aš susidūriau su keistu optimizavimu (arba, greičiau, praleista optimizavimo galimybe). Apsvarstykite šią funkciją, kad efektyviai išskleistumėte trijų bitų sveikųjų skaičių blokus į 8 bitų sveikuosius skaičius. Jis atlaisvina 16 ints kiekvienoje c iteracijoje.
nustatyti 10 okt. '14, 11:38
11
atsakymai

Ankstyvo grįžimo į funkciją veiksmingumas

Tai yra situacija, kurią dažnai vertinu kaip nepatyrusią programuotoją, ir ypač domiuosi ambicingu, greitu projektu, kurį bandau optimizuoti. Pagrindinėms C tipo kalboms (C, objC, C ++, Java, C # ir kt.)
nustatytas spalio 25 d. '11, 7:26
6
atsakymai

Kodėl negali (arba) kompiliatoriaus optimizuoti nuspėjamą dauginimo koeficiento ciklą?

Tai yra klausimas, kuris atsiminė skaitydamas Mysticial puikų atsakymą į klausimą: kodėl greičiau apdoroti surūšiuotą masyvą nei nerūšiuota masyvas? Susijusių tipų kontekstas: const unsigned arraySize = 32768; int duomenys [masyvai ...
yra nustatytas birželio 30 d. 12 val