compiler-optimization

Dlaczego dodatki elementwise są znacznie szybsze w oddzielnych pętlach niż w pętli łączonej?

Przypuśćmy a1, b1, c1, i d1 wskaż pamięć sterty, a mój kod numeryczny ma następującą pętlę rdzenia. const int n = 100000; f ... cout << s << plain(n, m, j, i); cout << endl; } } (pokazuje FLOP/S dla różnych wartości n.)

Dlaczego GCC nie optymalizuje a*A*A*A*A*A do (A*A*A)*(A*A*a)?

Robię pewną optymalizację numeryczną na aplikacji naukowej. Jedną z rzeczy, które zauważyłem jest to, że GCC zoptymalizuje wy ... czbę instrukcji mnożenia do 3. icc ma podobne zachowanie. Dlaczego Kompilatory nie rozpoznają tej sztuczki optymalizacyjnej?

Zastąpienie 32-bitowego licznika pętli 64-bitowym wprowadza szalone odchylenia wydajności

Szukałem najszybszej drogi do popcount dużych tablic danych. Napotkałem bardzo dziwny efekt : Zmiana zmiennej pętli zunsigned ... em pętlę. Więc nawet jeśli rozwiążesz, nadal możesz zostać trafiony przez majora odchylenia wydajności. Całkiem interesujące.

Wydajność Swift Beta: sortowanie tablic

Implementowałem algorytm w Swift Beta i zauważyłem, że wydajność była bardzo słaba. Po kopaniu głębiej zdałem sobie sprawę, ż ... Wydaje się, że nie ma już powodu, aby używać niebezpiecznego -Ofast (Alias -Ounchecked); plain -O tworzy równie dobry kod.

Dlaczego używamy słowa kluczowego volatile w C++? [duplikat]

Możliwy duplikat:C++: Kiedy pomogło ci słowo kluczowe volatile? Nigdy go nie używałem, ale zastanawiam się, dlaczego ludzie go używają? Co dokładnie robi? Przeszukałem forum, znalazłem tylko tematy C # lub Java.

Jak sprawdzić, które flagi-march=native aktywują się?

Kompiluję moją aplikację C++ używając GCC 4.3. Zamiast ręcznie wybierać flagi optymalizacji używam -march=native, która teore ... agi optymalizacji mające zastosowanie do sprzętu, na którym kompiluję. Ale jak mogę sprawdzić, których FLAG faktycznie używa?

Dlaczego GCC generuje tak radykalnie różne montaże dla prawie tego samego kodu C?

Podczas pisania zoptymalizowanej funkcji ftol znalazłem bardzo dziwne zachowanie w GCC 4.6.1. Pozwól, że najpierw pokażę Ci k ... ę również na profilu, fast_trunc_one jest o około 30% szybsze niż fast_trunc_two. Teraz moje pytanie: co jest tego przyczyną?

Poziomy optymalizacji Clang

Na gcc, Instrukcja wyjaśnia, co -O3, -Os, itd. przełożyć na konkretne argumenty optymalizacyjne (-funswitch-loops, -fcompare ... jścia optymalizacyjne i przejścia wybrane przez -Ox. Obecnie znalazłem tę listę przejść, ale nic na poziomie optymalizacji.

Dlaczego kompilator Rusta nie optymalizuje kodu przy założeniu, że dwa zmienne odniesienia nie mogą być aliasem?

Z tego, co wiem, aliasing referencji/wskaźników może utrudnić kompilatorowi generowanie zoptymalizowanego kodu, ponieważ musi ... zcze analizy aliasów do optymalizacji? Czy to dlatego, że jest jeszcze szansa, że a i b mogą się nazywać, nawet w safe Rust?

Dlaczego lambdy mogą być lepiej zoptymalizowane przez kompilator niż zwykłe funkcje?

W swojej książce The C++ Standard Library (Second Edition) Nicolai Josuttis stwierdza, że lambda mogą być lepiej zoptymalizow ... e Kompilatory mogą mieć lepszy lokalny kontekst z lambda i takie mogą tworzyć więcej założeń i wykonać więcej optymalizacji.

Jak wyłączyć optymalizację kompilatora gcc, aby włączyć przepełnienie bufora

Pracuję nad problemem z zadaniami domowymi , który wymaga wyłączenia ochrony optymalizacji kompilatora, aby działał. Używam ... są właściwe. Zdaję sobie sprawę, że to zależy od architektury - moja maszyna pracuje z 32-bitowym procesorem Intela. Dzięki.

Czy można powiedzieć predyktorowi gałęzi, jak prawdopodobne jest podążanie za gałęzią?

Żeby było jasne, Nie będę się starał o jakąkolwiek przenośność, więc wszelkie rozwiązania, które przywiążą mnie do określoneg ... ywając GCC 4.1.2 i ISA x86, jeśli ma to znaczenie), aby powiedzieć predyktorowi gałęzi, że powinien buforować dla tej gałęzi?

Co to jest & & & operacja w C

#include <stdio.h> volatile int i; int main() { int c; for (i = 0; i < 3; i++) { c = i & ... eżenie: warning: the address of ‘i’ will always evaluate as ‘true’ [-Waddress] Jak oceniany jest c w powyższym programie?

G++ optimization beyond-O3/ - Ofast

Problem Mamy średniej wielkości program do zadania symulacyjnego, który musimy zoptymalizować. Zrobiliśmy już wszystko, co ... ch instrukcji specyficznych dla procesora. -flto aby umożliwić optymalizację czasu łącza, w różnych jednostkach kompilacji.

Dlaczego enhanced GCC 6 optimizer łamie praktyczny kod C++?

GCC 6 ma nową funkcję optymalizatora : zakłada, że this zawsze nie jest null i optymalizuje się na tej podstawie. Propaga ... na tym konkretnym nieokreślonym zachowaniu? Nie wyobrażam sobie, żeby ktoś pisał if (this == NULL), bo to takie nienaturalne.

Jak działają kompilatory C / C++?

Po ponad dekadzie kodowania C / C++ zauważyłem następujący schemat - bardzo dobrzy programiści mają zazwyczaj szczegółową wie ... ki do zasobów internetowych lub ulubionych książek? Szczególnie interesuję się kompilacją C / C++, optymalizacją, GCC i LLVM.

Czy możliwe jest zaimplementowanie operatorów bitowych przy użyciu arytmetyki całkowitej?

Stoję przed dość osobliwym problemem. Pracuję nad kompilatorem dla architektury, która nie obsługuje operacji bitowych. Jedna ... nal mul // at the cost of doubling the instruction memory footprint. case 2: b = 4; break; case 1: b = 2; break; }

Użycie tego wskaźnika powoduje dziwną deoptymizację w hot loop

Ostatnio natknąłem się na dziwną deoptymizację (a raczej przegapiłem możliwość optymalizacji). Rozważmy tę funkcję do efekty ... da na to, że się mylę . Buforowanie wskaźnika członka w gorącej pętli wydaje się być niezbędna ręczna technika optymalizacji.

Czy optymalizacja kompilatora może wprowadzać błędy?

Dzisiaj odbyĹ ' em dyskusjÄ ™ z moim przyjacielem i przez kilka godzin debatowaliĺ "my nad"optymalizacjÄ ... kompilatora". B ... błąd w oprogramowaniu wynikowym? Jeśli się mylę, czy powinienem przestać programować i zamiast tego nauczyć się łowienia ryb?

Dlaczego std:: fill(0) jest wolniejsze od std::fill (1)?

Zaobserwowałem na układzie, który {[1] } na dużym std::vector<int> był znacząco i konsekwentnie wolniejszy przy ustawia ... bench(max_data_size, nthreads); } } Przedstawiono wyniki zestawione z g++ fillbench.cpp -O3 -o fillbench_gcc -fopenmp.