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

question-closed Dlaczego optymalizacja GCC spowalnia STL algorithms?

Cloud VPS
0 głosów
304 wizyt
pytanie zadane 15 marca 2019 w C i C++ przez Hiskiel Pasjonat (22,830 p.)
zamknięte 15 marca 2019 przez Hiskiel

Cześć.

Czytając to można zauważyć, że bez optymalizacja szybkość wykonywania każdej operacji w przypadku STL jest za każdym razem szybsza od SOI czy ranges, jednak gdy w przypadku GCC użyjemy optymalizacji (choćby 1 poziomu, to szybkość diametralnie się zwiększa i wygrywają zewnętrzne biblioteki (choć ranges chyba jest w standardzie, ale dziwnie to wygląda). Dlaczego ta zmiana jest na złe, choć jest to optymalizacja, a autora to nie dziwi (tak, jakby tak właśnie powinno być)? 

 

komentarz zamknięcia: Stupid me.
komentarz 15 marca 2019 przez adrian17 Mentor (354,180 p.)
Gdzie widzisz że spowalnia? Ja na oko widzę że optymalizacja wszędzie pomaga, tylko w niektórych przypadkach jedna biblioteka zyskuje bardziej niż inna.
komentarz 15 marca 2019 przez Hiskiel Pasjonat (22,830 p.)

"ratio CPU time / Noop time
Lower is faster"

komentarz 15 marca 2019 przez niezalogowany
@Hiskiel chodzi Ci o różnice pomiędzy O2 i O3 na pierwszych dwóch wykresach czy o to, że słupki są nagle wyższe (przynajmniej tak bym to dosłownie rozumiał sugerując się tylko tytułem)? Spróbuj wytłumaczyć o co chodzi na konkretnym przykładzie.
komentarz 15 marca 2019 przez Hiskiel Pasjonat (22,830 p.)
Nie rozumiem, czego nie rozumiecie.. Są pokazane 4 wykresy z każdych algorytmów dla GCC - z optymalizacją 0,1,2 i 3. Bez optymalizacji słupek pokazujący szybkość dla STL jest najmniejszy, za to z optymalizacją słupki nagle rosną i STL nagle wykonuje się kilka razy wolniej. Spójrz tylko na podlinkowany artykuł.
2
komentarz 15 marca 2019 przez niezalogowany
@Hiskiel porównaj wartości na przedziałkach.
komentarz 15 marca 2019 przez Hiskiel Pasjonat (22,830 p.)
Nie było tematu, dzięki.
komentarz 15 marca 2019 przez niezalogowany
Ok każdy może się pomylić. Tak na marginesie dodam, że czasami O2 może być trochę szybsze od O3, Skuteczność optymalizacji jest zależna od procesora. Niektóre instrukcje mogą być dla jednych bardziej skuteczne, a inne mniej. Zazwyczaj twórcy kompilatorów starają się znaleźć złoty środek, ale nie można dogodzić każdemu.

Podobne pytania

0 głosów
2 odpowiedzi 651 wizyt
pytanie zadane 25 listopada 2019 w C i C++ przez SimiVoid Pasjonat (19,790 p.)
0 głosów
1 odpowiedź 109 wizyt
pytanie zadane 7 listopada 2020 w C i C++ przez TOWaD Mądrala (6,500 p.)
0 głosów
0 odpowiedzi 180 wizyt
pytanie zadane 7 września 2019 w C i C++ przez niezalogowany

93,469 zapytań

142,404 odpowiedzi

322,716 komentarzy

62,852 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

Kursy INF.02 i INF.03
...