compiler-optimization

benchmarking, Zmiana kolejności kodu, lotna

Decyduję się na testowanie konkretnej funkcji, więc naiwnie piszę kod w ten sposób: #include <ctime> #include <ios ... nieulotnej jest konsekwentnie szybka, podczas gdy wersja nieulotna jestniekonsekwentnie (a czasami dramatycznie) wolniejsza.

Jak kompilator tak dobrze optymalizuje tę funkcję?

Więc przeglądałem trochę magii, która jest O3 w GCC (właściwie kompiluję za pomocą Clang, ale to samo jest z GCC i zgaduję, ż ... ym interesującym efektem ubocznym tego pytania byłoby pokazanie kilku ciekawszych optymalizacji, które GCC/Clang może zrobić.

Czy kompilator może zoptymalizować przydzielanie sterty do stosu?

Jeśli chodzi o optymalizację kompilatora, czy jest legalna i / lub możliwa zmiana alokacji sterty na alokację stosu? A może z ... , gdyby Oryginalna wersja opierała się na takich rzeczach, jak niestandardowe alokatory. Czy norma mówi coś konkretnie o tym?

Czy różne poziomy optymalizacji mogą prowadzić do funkcjonalnie odmiennego kodu?

Jestem ciekaw wolności jakie ma kompilator podczas optymalizacji. Ograniczmy to pytanie do GCC i C / C++ (dowolna wersja, dow ... jeśli wiąże się to z nadużywaniem ścisłego aliasingu. (Pod warunkiem, że ktoś pokazujesz mi, jak wysłać bounty komuś innemu.)

Jaka jest różnica pomiędzy opcjami kompilatora /Ox i /O2?

Kompilator C++ firmy Microsoft (cl.exe, dołączony do Visual Studio) oferuje kilka przełączników optymalizacyjnych. Różnica mi ... su kompilacji? Czy jest to po prostu zupełnie bezsensowna "rekomendacja" wynikająca z faktu, że /O2 jest domyślną opcją W VS?

Optymalizacje JIT Hotspot

W wykładzie na temat JIT w Hotspot chcę podać jak najwięcej przykładów konkretnych optymalizacji, które wykonuje JIT. Wiem tylko o "method inlining" , ale powinno być o wiele więcej. Daj głos na każdy przykład.

Optymalizacja kodu GCC SSE

Ten post jest ściśle związany z innym, który napisałem kilka dni temu . Tym razem napisałem prosty kod, który po prostu doda ... niż pierwszy. Zrobiłem również test z pojedynczymi wartościami dokładności i uzyskałem podobne wyniki. Jaki jest tego powód?

Granice typu Nat w bezkształtnych

W bezkształtnym, typ Nat reprezentuje sposób kodowania liczb naturalnych na poziomie typu. Jest to używane na przykład dla li ... Czy reprezentacja ta może reprezentować duże liczby, np. 1000000 lub 253, a może spowoduje to rezygnację kompilatora Scali?

W jaki sposób GCC optymalizuje nieużywaną zmienną zwiększoną wewnątrz pętli?

Napisałem ten prosty program w C: int main() { int i; int count = 0; for(i = 0; i < 2000000000; i++){ ... tko wyjaśnij: wyjściegcc-S-O2 . jeśli pętla jest zoptymalizowana zgodnie z oczekiwaniami (jedna suma zamiast wielu Sum)?

Czy to błąd optymalizacji kompilatora, czy nieokreślone zachowanie?

Mamy irytujący błąd, którego nie potrafię wyjaśnić wokół tego kawałka kodu: unsigned char bitmap[K_BITMAP_SIZE] = {0} ; Set ... np. wygenerowany asembler dla obu konfiguracji, aktualizacja Jak g++ radzi sobie z tym problemem), tak szybko jak to możliwe.

Dlaczego inlining kompilatora generuje wolniejszy Kod niż inlining ręczny?

Tło [10]}następująca pętla krytyczna kawałka oprogramowania numerycznego, napisanego w C++, zasadniczo porównuje dwa obiekt ... onieważ nie jest to możliwe, ponieważ nie jest to możliwe, ponieważ nie jest to możliwe, ponieważ nie jest to możliwe.]}

Przepisywanie jako praktyczna technika optymalizacji w GHC: czy jest to naprawdę potrzebne?

Czytałem artykuł napisany przez Simon Peyton Jones, et al. nazwa "gra według zasad: przepisywanie jako praktyczna technika o ... s. Algorytm tej automatycznej konwersji wydaje się być dość prosty. Dlaczego więc nie wdrożyć tego zamiast przepisywać reguł?

Funkcja nie wywołana w kodzie zostanie wywołana w czasie wykonywania

Jak poniższy program może wywołać never_called Jeśli nigdy kod? #include <cstdio> static void never_called() { std: ... the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Kiedy Hotspot może przydzielić obiekty na stosie? [duplikat]

To pytanie ma już odpowiedź tutaj: uprawnienia do analizy ucieczki / alokacji stosu za pomocą Java 7 ... pytanie jest duplikatem, ale (IMO) odpowiedź poniżej jest lepszą odpowiedzią niż to, co jest dostępne w pytaniu oryginalnym.