• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kompilatory C++ - jak wypada C++ w Visual Studio 2019?

Object Storage Arubacloud
0 głosów
735 wizyt
pytanie zadane 1 grudnia 2019 w C i C++ przez reaktywny Nałogowiec (40,990 p.)

Jak oceniacie pracę w C++ / w IDE Microsoftu (Visual Studio 2019) z ichnim kompilatorem, na tle GCC czy Clang? Jak się mają te rozwiązania do siebie nawzajem? Jak ze wspieraniem najnowszych standardów w nich?

Myślę, o pisaniu aplikacji głównie konsolowych w C++ w VS 2019

Spotkałem się z opinią, że w niektórych przypadkach kod z VS jest sporo wolniejszy niż ten z GCC czy Clang:

 https://developercommunity.visualstudio.com/content/problem/194955/vs-produces-code-that-is-15-2x-slower-than-gcc-and.html

komentarz 1 grudnia 2019 przez SimiVoid Pasjonat (19,790 p.)
W Visual Studio 2019 oficjalnie możesz też korzystać z kompilatora Clang.
komentarz 1 grudnia 2019 przez reaktywny Nałogowiec (40,990 p.)
edycja 2 grudnia 2019 przez reaktywny
Dzięki za info!

A z CLangiem można korzystać ze wszystkich dobrodziejstw VS? Np. profilowania?

2 odpowiedzi

+2 głosów
odpowiedź 1 grudnia 2019 przez adrian17 Ekspert (344,860 p.)
wybrane 1 grudnia 2019 przez reaktywny
 
Najlepsza

Spotkałem się z opinią, że w niektórych przypadkach kod z VS jest sporo wolniejszy niż ten z GCC czy Clang:

Dla każdego porównania dwóch kompilatorów znajdzie się kod który jest w jednym szybszy a w drugim wolniejszy.

Na przykład zarówno Chrome jak i FF przesiadły się z MSVC na Clanga na Windowsie - ale głównie po to, by mieć jeden "główny" kompilator na wszystkie platformy i móc mieć bardziej uniwersalną infrastrukturę między nimi. Oba zespoły podczas przesiadki skomentowały że niektóre benchmarki (a mają ich masę, jak to przeglądarki ;) ) się poprawiły, inne pogorszyły i nie ma oczywistego "zwycięzcy" (z gwiazdką że istnieje pole do poprawy po stronie Clanga).

Osobiście twierdzę że ich kompilator jest dobry (z punktu widzenia piszącego dość zwykłe programy), a IDE i debugger kapitalne.

Jak ze wspieraniem najnowszych standardów w nich?

https://en.cppreference.com/w/cpp/compiler_support

Znacząco się poprawili od czasu np 2013. C++17 mają w pełni wspierany. Przyszły C++20 idzie do przodu. Teraz w czasem minor release'ach dodają rzeczy z nowszych standardów, więc czasem można na nie czekać krócej niż w GCC/Clangu.

I tak jak w innym komentarzu zostało powiedziane - teraz możesz używać w VSie Clanga, albo np używać VSa do zdalnego developowania na linuxa, cmakefile też rozumie; więc VS technicznie już nie wymusza używania ich kompilatora.

komentarz 1 grudnia 2019 przez reaktywny Nałogowiec (40,990 p.)
Dziękuję za obszerną odpowiedź.
0 głosów
odpowiedź 2 grudnia 2019 przez pvalue Dyskutant (8,720 p.)
edycja 2 grudnia 2019 przez pvalue
Z moich informacji najlepszym kompilatorem od lat jest Intel Parallel Studio, zarówno na WIN jak i wersja Linux, z powodu wykorzystania wszystkich innowacyjnych instrukcji intela (procesor). Wiem, że GCC ma oficjalne wsparcie firmy AMD.

A tak serio najlepszy jest LLVM z powodu rozwiązania problemu wielowątkowości kodu, tzn piszesz po staremu, a to komplator pilnuje ile rdzenii wykorzysta twój program. Jednakże ten kompilator może być niedostępny w Polsce. Program w nim skompilowany to Firefox (tutaj różne źródła podają co innego), który jest naprawde szybki.

Co do Visuala m$ jest wystarczający, potrafi skompilować kod pod ARM, ale opiera się głównie na zewnętrznych bibliotekach tzn. Kod wynikowy będzie miał niewielką objętość ale bez dot net nie zadziała ;(
komentarz 2 grudnia 2019 przez adrian17 Ekspert (344,860 p.)

A tak serio najlepszy jest LLVM z powodu rozwiązania problemu wielowątkowości kodu, tzn piszesz po staremu, a to komplator pilnuje ile rdzenii wykorzysta twój program. Jednakże ten kompilator może być niedostępny w Polsce.

...co?

Jedno, że nie za bardzo wiem o czym tutaj mówisz. Jakieś źródła proszę.

Dwa, że nie wiem co masz na myśli przez "niedostępność w Polsce" open-source'owego kompilatora/backendu.

Kod wynikowy będzie miał niewielką objętość ale bez dot net nie zadziała ;(

Skompilowany C++ nie zadziała bez środowiska .NETa... huh? To nie ma sensu.

komentarz 2 grudnia 2019 przez reaktywny Nałogowiec (40,990 p.)

A tak serio najlepszy jest LLVM z powodu rozwiązania problemu wielowątkowości kodu, tzn piszesz po staremu, a to komplator pilnuje ile rdzenii wykorzysta twój program.

Brzmi jak w bajce :)

komentarz 4 grudnia 2019 przez pvalue Dyskutant (8,720 p.)

@adrian17,  na jednym z forów wyczytałem (goldenline), że ktoś próbował ściągnąć pliki LLVM i mial problem z zależnościami, które ciagły sie bez konca zajmująć juz 11gb...

komentarz 4 grudnia 2019 przez adrian17 Ekspert (344,860 p.)

które ciagły sie bez konca zajmująć juz 11gb...

Może próbował budować coś ze źródeł? Wtedy rozmiar pełnego builda może przekroczyć 10GB.

Natomiast wciąż czekam na źródła dla "piszesz po staremu, a to komplator pilnuje ile rdzenii wykorzysta twój program" oraz "Kod wynikowy będzie miał niewielką objętość ale bez dot net nie zadziała".

komentarz 5 grudnia 2019 przez reaktywny Nałogowiec (40,990 p.)
Oj ciężko będzie się z tego wybronić :)
komentarz 9 grudnia 2019 przez pvalue Dyskutant (8,720 p.)

@adrian17,

Tu masz programowanie równolegle https://pl.wikipedia.org/wiki/OpenMP, które "troche" sie różni od zwykłego wklepywania kodu, jednakże ze mnie słaby programista ponieważ nigdy za to sie nie wziąłem.

A odnosnie dot net, spróbuj swój program w VS uruchomić na innym windowsie, ja pisalem w CLR (taka microsowata narośl na c++) i programy nie chciały chodzić...w innym środowisku niż to na którym skompilowałem....

komentarz 9 grudnia 2019 przez adrian17 Ekspert (344,860 p.)
edycja 9 grudnia 2019 przez adrian17

OK, no jest OpenMP, ale jest wspierany przez masę kompilatorów, nie tylko LLVM; GCC i MSVC też go wspierają (choć chyba MSVC starszą wersję). I nie piszesz dosłownie "po staremu", tylko trzeba rozumieć pragmy rozszerzające język.

ja pisalem w CLR (taka microsowata narośl na c++)

To... wtedy nie piszesz C++a. Piszesz C++/CLI który jest innym językiem. A pytanie jest o kompilatora C++a ;)

Podobne pytania

0 głosów
0 odpowiedzi 238 wizyt
pytanie zadane 6 grudnia 2019 w C i C++ przez Gildin1_2 Gaduła (3,060 p.)
0 głosów
1 odpowiedź 489 wizyt
0 głosów
0 odpowiedzi 160 wizyt
pytanie zadane 14 grudnia 2019 w C i C++ przez Gildin1_2 Gaduła (3,060 p.)

92,555 zapytań

141,403 odpowiedzi

319,560 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...