"Czysty kod" a wydajność.
Przyklady gdzie widać, ze czysty kod szkodzi wydajności - jakie są wasze przemyślenia? Zmuszają was do pisania czystego kodu?
- #
- #
- #
- 32
- Odpowiedz
Przyklady gdzie widać, ze czysty kod szkodzi wydajności - jakie są wasze przemyślenia? Zmuszają was do pisania czystego kodu?
Komentarze (32)
najlepsze
1. Make it work
2. Make it right
3. Make it fast [enough]
NAJPIERW
Na x86
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
Dla mnie to jest scenariusz "firma garażowa" vs korporacja. Czy firma garażowa jest bardziej wydajna i elastyczna? Zdecydowanie!
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
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
@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.
I co z tego? W przypadku polimorfizmu będziesz musiał przejrzeć wszystkie implementacje, na jedno wychodzi. Tylko
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…
@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