Wykop.pl Wykop.pl
  • Główna
  • Wykopalisko175
  • Hity
  • Mikroblog
  • Zaloguj się
  • Zarejestruj się
Zaloguj się

Popularne tagi

  • #ciekawostki
  • #informacje
  • #technologia
  • #polska
  • #swiat
  • #motoryzacja
  • #podroze
  • #heheszki
  • #sport

Wykop

  • Ranking
  • Osiągnięcia
  • FAQ
  • O nas
  • Kontakt
  • Reklama
  • Regulamin

17

"Czysty kod" a wydajność.

Przyklady gdzie widać, ze czysty kod szkodzi wydajności - jakie są wasze przemyślenia? Zmuszają was do pisania czystego kodu?

Emil88PL
Emil88PL
Emil88PL
z
youtube.com
dodany: 02.03.2023, 11:04:02
  • #
    programowanie
  • #
    programista15k
  • #
    starywykop
  • 32
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Treści powiązane (1)

Do poczytania
Emil88PL
z computerenhance.com
  • 0

Komentarze (32)

najlepsze

MacDada
MacDada
02.03.2023, 11:47:56 via Wykop
  • 7
Nie oglądałem filmu jeszcze, ale co do zasady… „to zależy”.

1. Make it work
2. Make it right
3. Make it fast [enough]

NAJPIERW
  • 20
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

groman43
groman43
02.03.2023, 13:02:10 via Wykop
  • 3
@MacDada: Dawno, dawno temu miałem wątpliwą przyjemność oglądania jak pewna grupa programistów, teoretycznie inteligentnych ludzi, stworzyło arcydzieło inżynierii oprogramowania. Wykorzystali wszystkie znane ludzkości wzorce projektowe oraz wynaleźli 42 nowe. Jeden z programistów w pewnym momencie stwierdził, że w ogóle nie używają ifów :) (no szkoda że język, żeby był kompletny w sensie Turninga musi mieć instrukcję warunkową), Ogólnie cudo, którego ludzkość jeszcze nie widziała ( ͡° ͜ʖ ͡°)

Na x86
  • Odpowiedz
zibizz1
zibizz1
zibizz1
02.03.2023, 13:48:19 via Wykop
  • 2
Jeszcze komenatrz odnośnie filmiku:

Facet przedstawia to na prostym przykładzie, gdzie koszt wywołania wirutalnej metody ma znaczny udział w koszcie operacji. W wielkim projekcie lepiej porzucic 40% wydajności na rzecz 100% wiecej czasu developmentu z uwagi na to ze kod jest mało czytelny i łatwo popsuć
Optymalizacja z tabelką to szczególny przypadek i to jest przykład dobrego podejścia do 3. Make it fast [enough] i widać też tutaj że własnie wymaga to
  • Odpowiedz
MQs
MQs
02.03.2023, 20:00:11 via Wykop
  • 6
W niskopoziomowym programowaniu takie optymalizacje mają zupełnie inny sens niż w przypadku modelowania biznesowego, a opieranie się na przykładzie, który jest specjalnie uproszczony by pokazać koncept mierzy praktycznie sam narzut. Jak zaparkujesz 5m od domu zamiast 10 to nie znaczy, że cała droga do pracy też się dzięki temu skróci dwukrotnie.
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

MarcusPlinius
MarcusPlinius
02.03.2023, 11:42:42 via Wykop
  • 6
Bardzo ciekawe wideo. Nie zadawałem sobie sprawy z tego, że te reguły mogą mieć aż taki wpływ na wydajność oprogramowania. Pytanie jest natomiast, czy mamy wybór? Oprogramowanie robi się coraz bardziej złożone a to wymaga lepszego zarządzania kodem, żeby się nie zawaliło. Co nam z szybkiego oprogramowania, które będzie się wysypywało na każdym kroku?

Dla mnie to jest scenariusz "firma garażowa" vs korporacja. Czy firma garażowa jest bardziej wydajna i elastyczna? Zdecydowanie!
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

Kaczus2B
Kaczus2B
Kaczus2B
03.03.2023, 22:37:20 via Wykop
  • 0
@MarcusPlinius: Każde rozwiązanie ma swój koszt, choć niektóre rzeczy z clean code z dobrym kompilatorem przyspieszają. Po prostu jesli jesteś tylko automatem, który stosuje jeden sposób kodowania, zawsze będziesz mniej wydajny i będziesz tworzył gorsze rzeczy.

W praktyce zazwyczaj robi sie cos pomiędzy, tam gdzie przejrzystość ma większe znaczenie niż jakieś przyspieszenie (które w rezultacie będzie nieodczuwalne), stosujemy clean code, w innych wypadkach optymalizujemy. Tak stosuje się od wieków. Pamiętam
  • Odpowiedz
Sztywnesutkiszatana
Sztywnesutkiszatana
02.03.2023, 21:21:58 via Wykop
  • 1
Nie pokazał nic nowego: w projektach, w których dynamiczny polimorfizm stanowi duży narzut alternatywą jest skorzystanie z CRTP:
https://eli.thegreenplace.net/2013/12/05/the-cost-of-dynamic-virtual-calls-vs-static-crtp-dispatch-in-c
https://www.modernescpp.com/index.php/more-about-dynamic-and-static-polymorhism

Wersja z samymi switchami nie udowadnia w zasadzie niczego. Można z tego skorzystać w małych projektach, lub tam gdzie jest bardzo duży nacisk na wydajność (gry, systemy embedded) ewentualnie zostawać w małych fragmentach większych systemów ale spróbuj napisać w ten sposób i przetestować coś większego.
Bez stosowania SOLIDa projekt zamieni się szybko
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

Krolik
Krolik
Krolik
03.03.2023, 07:32:28 via Wykop
  • -1
Bez stosowania SOLIDa projekt zamieni się szybko w jedno wielkie spaghetti code


@Sztywnesutkiszatana: kompletna bzdura, SOLID nie jest jedyną metodologia tworzenia czystego kodu. Kurczowe trzymanie się SOLID wręcz prowadzi do niepotrzebnej komplikacji kodu i utrudnia zmiany i wbrew pozorom nie jest to żaden czysty kod.

gdzie jedna mała zmiana będzie wymagała przejrzenia setek switchy


I co z tego? W przypadku polimorfizmu będziesz musiał przejrzeć wszystkie implementacje, na jedno wychodzi. Tylko
  • Odpowiedz
Krolik
Krolik
Krolik
03.03.2023, 07:38:50 via Wykop
  • 0
@Sztywnesutkiszatana: https://qntm.org/clean
  • Odpowiedz
77adam
77adam
02.03.2023, 12:43:44 via Wykop
  • 1
Trzeba iść dalej - bezpieczeństwo też nie jest ważne, gdy liczy się wydajność. Haszowanie haseł jest dla tych, którym nie działa notatnik to ich przechowywania. :-)
  • 1
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

MacDada
MacDada
02.03.2023, 13:52:50 via Wykop
  • 1
@77adam: Przyklady na C plus plusie -> więc jak najbardziej.

A potem cyk, Bjarne Stroustrup meme, bo rząd USA zaleca unikać cze plusz plusza, a w 21. wieku NIE DA się tak zrobić języka, żeby nie było wycieków pamięci…
  • Odpowiedz
PoteznyMagWody
PoteznyMagWody
02.03.2023, 11:44:42 via Wykop
  • 1
Zobaczyłem c++, przestałem oglądać bo to oczywiste ze w tym języku każda linijkę da się zoptymalizować i zasrać tak ze nie będzie się dało tego czytać
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych odpowiedziach

Krolik
Krolik
Krolik
02.03.2023, 12:47:43 via Wykop
  • 4
@PoteznyMagWody: Myk w tym, że wersja zoptymalizowana używająca switcha jest czytelniejsza i jest lepszym kodem z punktu widzenia utrzymania niż wersja używająca polimorfizmu.
  • Odpowiedz
Krolik
Krolik
Krolik
03.03.2023, 07:24:08 via Wykop
  • 0
ze w tym języku każda linijkę da się zoptymalizować i zasrać tak ze nie będzie się dało tego czytać


@PoteznyMagWody: wręcz odwrotnie. Tzn oczywiście w każdym języku da się pisać nieczytelny kod, ale akurat w językach takich jak C++ i Rust masz coś takiego jak zero-cost abstractions. Oznacza to tyle, że można pisać bardzo wysokopoziomowy i czytelny kod, np. używając operacji na kolekcjach takich jak map/filter/reduce, który będą mieć ostatecznie
  • Odpowiedz

Hity

tygodnia

Pracownicy zonda zostali zwolnieni. Prezes nieuchwytny, ma paszport Izraela.
Pracownicy zonda zostali zwolnieni. Prezes nieuchwytny, ma paszport Izraela.
2751
Pracownia 3lab potwierdza, że aplikacja Kornelii Wieczorek nigdy nie powstała
2601
Prima aprilis
Prima aprilis
2685

Pokaż 18+

"Boże, jak on musiał cierpieć". 14 letni Mateusz z Suszu nie żyje
"Boże, jak on musiał cierpieć". 14 letni Mateusz z Suszu nie żyje
2429
Miały być poidła dla koni a powstały domy - dewastacja krajobrazu w Zakopanem
Miały być poidła dla koni a powstały domy - dewastacja krajobrazu w Zakopanem
2349
Pokaż więcej

Powiązane tagi

  • #programista15k
  • #pracait
  • #it
  • #naukaprogramowania
  • #java
  • #informatyka
  • #pracbaza
  • #webdev
  • #korposwiat
  • #praca
  • #heheszki
  • #pytanie
  • #sztucznainteligencja
  • #gruparatowaniapoziomu
  • #komputery

Wykop © 2005-2026

  • O nas
  • Reklama
  • FAQ
  • Kontakt
  • Regulamin
  • Polityka prywatności i cookies
  • Hity
  • Ranking
  • Osiągnięcia
  • Changelog
  • więcej

RSS

  • Wykopane
  • Wykopalisko
  • Komentowane
  • Ustawienia prywatności

Regulamin

Reklama

Kontakt

O nas

FAQ

Osiągnięcia

Ranking