Jakub Jelinek ogłosił dostępność GCC 5.1, zestawu kompilatorów do różnych języków programowania.
Zmiany, jakie zaszły:
- Kompilator GCC C otrzymał domyślny standard GNU11 (C11), zamiast starego GNU89 (C89).
- Pojawiło się sporo zmian międzyproceduralnych, jak: optymalizacja wirtualnych tabel, wykrywanie i optymalizacja zmiennych tylko do odczytu i wiele więcej
- Zmniejszono zużycie pamięci i czas linkowania, podczas włączonej optymalizacji w czasie linkowania (LTO)
- Dodano pełne wsparcie dla OpenMP 4.0, w językach C, C++ i Fortran. Zaimplementowano wstępną obsługę układów Intel Xeon Phi
- GCC C i C++ otrzymały wsparcie dla współbieżnego interfejsu programowania Intel Cilk Plus
- Dodano dwie procedury preprocesora:
_has_include
i_has_include_next
, które to dodają pliki nagłówkowe plików, w momencie jeżeli są one dostępne w systemie - Pojawiło się sporo nowości z C++14
- Biblioteka libstdc++ posiada pełne wsparcie dla C++11 i eksperymentalną obsługę C++14
- Dodano pełne wsparcie dla języka Go 1.4.2
- Dodano wstępne wsparcie dla kompilacji Just-In-Time (JIT), poprzez nową bibliotekę libgccjit
- Udoskonalono generowanie kodu architektury AArch64 dla procesorów Cortex-A57 i A53. Dodano także wsparcie dla procesorów: ARM Cortex-A72, Cavium ThunderX i Applied Micro X-Gene 1
- Dodano wsparcie dla instrukcji AVX-512, które będą dostępne w procesorach serwerowych Intel Skylake
- Dodano wsparcie dla architektur MIPS Release 3, Release 5 i Release 6. Prócz tego pojawiła się obsługa procesorów Cavium Octeon 3 i Imagination P5600
- System DragonFlyBSD wspiera w pełni GCC
GNU11 dotyczy języka C11, nie C++11, gcc w domyśle jest kompilatorem C, nie C++, od którego jest g++.
Ciekawe jak z wydajnością programów skompilowanych gcc5.1 w porównaniu do starszych wersji gcc oraz do intel c++ i ms vs c++? Robiliście jakieś testy? Który kompilator generuje najszybszy kod?
Mam zamiar to zmierzyć w ramach projektu na studia. Ostatni mój test („Benchmark kompilatorów”) nie wyłonił jednoznacznego zwycięzcy. Może VC++ też zrobię,
W tej chwili interesuje mnie wydajność JITa.
Wszystkie kompilatory są wystarczająco wydajne. Problem polega na tym, że są wydajne w operacjach skalarnych. Natomiast wektory i wielowątkowość leży i kwiczy. Chyba, że programista sam się tym zajmie. A w tych cechach znajduje się największy wzrost wydajności.
Nie wspominając o tym, że większość programistów C++ nie potrafi dziś programować wydajnych programów z uwzględnieniem cache.
Czekamy na jądra superzoptymalizowane tym kompilatorem o niebotycznych przyrostach wydajności w porównaniu do poprzedniego kompilatora ;)