Pitanja označena kao "optimizacija za kompilaciju"

Optimizacija kompilatora uključuje prilagođavanje kompilatora kako bi se smanjilo vrijeme izvršenja ili veličina objekta, ili oboje. To se može učiniti pomoću argumenata kompajlera (na primjer, CFLAGS, LDFLAGS), dodataka kompajlera (na primjer, DEHYDRA) ili izravnih promjena kompilatora (kao što je promjena izvornog koda).
10
odgovor

Zašto je u odvojenim ciklusima dodatak stigmi mnogo brži nego u kombiniranom ciklusu?

Pretpostavimo da a1, b1, c1 i d1 upućuju na hrpu memorije, a moj numerički kod ima sljedeću glavnu petlju. const int n = 100000; za (int j = 0; j <n; j ++) {a1 [j] + = b1 [j]; c1 [j] + = d1 [j]; } Ovaj se ciklus izvodi 10.000 puta ...
17. prosinca '11 u 23:40
12
odgovor

Zašto GCC ne optimizira * a * a * a * a * a to (a * a * a) * (a * a * a)?

Radim neku numeričku optimizaciju u znanstvenoj primjeni. Primijetio sam da GCC optimizira poziv na pow (a, 2), kompajlira ga u * a, ali poziv na pow (a, 6) nije optimiziran i zapravo će pozvati funkciju biblioteke pow, što značajno usporava proizvodnju ...
postavljen je 21. lipnja 2011. u 21:49
10
odgovor

Zamjena brojača 32-bitnih petlji sa 64-bitnim vrijednostima dovodi do ludih odstupanja performansi

Tražio sam najbrži način za popcount velike podatke polja. Bio sam suočen s vrlo čudnim učinkom: promjena varijable petlje iz nepotpisanog u uint64_t rezultirala je smanjenjem performansi na mom računalu na 50%. Benchmark #include ...
set 01 aug. '14 u 13:33
9
odgovor

Brza beta: sortiranje nizova

Algoritam sam implementirao u Swift Beta i primijetio da je izvedba vrlo loša. Promatrajući dublje, shvatio sam da je jedno od uskih grla nešto jednostavno kao sortiranje nizova. Odgovarajući dio je ovdje: neka n = 1000000 var ...
postavljen je 08. i 14. lipnja u 2:53
3
odgovor

Zašto koristimo ključnu riječ volatile u C ++?

Mogući duplikati: C ++: kada vam je ikada pomogla volatilna ključna riječ? Nikad ga nisam koristio, ali se pitam zašto ga ljudi koriste? Što on radi? Tražio sam forum, našao sam ga samo u C # ili u Javi.
postavljen 14. prosinca '10 u 12:14
2
odgovor

Što jeoperacija u C

#include <stdio.h> volatile int i; int main () {int c; za (i = 0; i <3; i ++) {c = i > printf ("% d", c); } povratak 0; } Izlaz gore navedenog programa, preveden pomoću ...
19. prosinca '12 u 9:48
3
odgovor

Zašto GCC generira tako radikalno drugačiju građu za gotovo isti C kod?

Kada pišem optimiziranu funkciju ftol, u GCC 4.6.1 sam pronašao vrlo čudno ponašanje. Dopustite mi da vam prvo pokazati kod (za jasnoću, primijetio sam razlike): fast_trunc_one, C: int fast_trunc_one (int i) {int mantissa, eksponent, znak, r; ...
postavljeno 20. travnja '12 u 19:59
10
odgovor

Kako kompajlirati Tensorfove s uputama SSE4.2 i AVX?

Ovo je poruka primljena od pokretanja skripte za provjeru radi li Tensorflow: I tensorflow / stream_executor / dso_loader.cc: 125] uspješno je otvorila CUDA knjižnicu libcublas.so.8.0 ,
postavljeno 23. prosinca 16 u 2:21
2
odgovor

Nat ograničenja tipa u bezobličnom

U bezobličnom, tip Nat je način za kodiranje prirodnih brojeva na razini tipa. To se, primjerice, koristi za popise fiksne veličine. Možete čak izvoditi i izračune na razini vrste, na primjer. dodaj popis elemenata N ...
postavljen 23. siječnja 14 u 2:15
5
odgovor

Zašto poboljšani GCC 6 optimizator prekida praktični C + + kod?

GCC 6 ima novu optimizacijsku funkciju: pretpostavlja se da je to uvijek ne-nula i da se na temelju toga optimizira. Raspon raspona vrijednosti sada pretpostavlja da je ovaj pokazivač C ++ funkcija ne-nula. To eliminira ...
postavljeno 27. travnja 16 u 17:45
2
odgovor

Zašto su lambde bolje optimizirane od prevoditelja nego jednostavne funkcije?

U svojoj knjizi Standardna knjižnica C ++ (drugo izdanje), Nikolay Josuttis tvrdi da je kompajler bolje optimiziran od lambda nego jednostavne funkcije. Osim toga, C ++ kompajleri optimiziraju lambde bolje nego normalne funkcije. (Zemlje ...
set 05 Dec '12 u 14:38
5
odgovor

Kako vidjeti koje će se zastavice -march = native aktivirati?

Kompajliram svoju C ++ aplikaciju koristeći GCC 4.3. Umjesto ručnog odabira oznaka optimizacije, koristim -march = native, što teoretski treba dodati sve zastavice optimizacije koje se primjenjuju na hardver koji sam kompajlirao ...
postavljen 29. ožujka u 12:14
3
odgovor

Korištenje tog pokazivača uzrokuje čudnu deoptimizaciju u vrućem ciklusu.

Nedavno sam naišao na čudnu de-optimizaciju (ili bolje rečeno, propuštenu mogućnost optimizacije). Razmotrite ovu funkciju za učinkovito dekomprimiranje nizova trobitnih cijelih brojeva u 8-bitne cjeline. Ona raspakira 16 ints u svakoj iteraciji c ...
set 10 okt. 14 u 11:38
11
odgovor

Učinkovitost prijevremenog povratka u funkciju

To je situacija koju često vidim kao neiskusnog programera, a posebno me zanima ambiciozan, brz projekt koji pokušavam optimizirati. Za glavne C-like jezike (C, objC, C ++, Java, C #, itd.) I njihove uobičajene kompajle ...
postavljen 25. listopada. '11 u 7:26
6
odgovor

Zašto ne može (ili ne) kompajler optimizirati predvidljivi ciklus dodavanja u množenje?

To je pitanje koje mi je palo na pamet prilikom čitanja Mysticialovog briljantnog odgovora na pitanje: zašto je brže obraditi sortirano polje od nesortiranog niza? Kontekst za uključene vrste: const unsigned arraySize = 32768; int podaci [nizovi ...
postavljen je 30. lipnja 2012. u 20:48 sati