Wpis z mikrobloga

#programowanie
Myślicie, że jak już nie zdołają upakować tranzystorów w mniejszej technologii niż 3nm, to zacznie się hype na optymalizację software'u? Programiści będą wreszcie zmuszeni do myślenia i płace pozostaną na obecnym poziomie, albo nawet wzrosną bo amatorzy pchający 50 poziomów abstrakcji do enterprise hello worlda po prostu się wykruszą z zabawy
  • 8
@zwei: większość programów przez większość czasu nie czeka na procesor, tylko na dostęp do pamięci/sieci/dysku. Szybszy procesor w niczym nie pomaga. Raczej potrzebna jest rewolucja w językach programowania i architekturze systemów operacyjnych, która wymusi pisanie softu wielowątkowo i z uwzględnieniem czasu dostępu do cache różnych poziomów.

Spodziewam się, że będzie to rewolucja w oparciu o języki funkcyjne, bo są do tego znacznie lepiej przystosowane (patrz shadery w kartach graficznych - to
@zwei: Optymalizować warto do pewnego poziomu. Zbyt duże straty finansowe może spowodować optymalizacja na siłę tam gdzie nie jest potrzebna aż taka wydajność. Przykładowo dla osoby która robi jakiegoś requesta do serwera nie robi różnicy czy on dostanie wynik po 15 ms czy po 60 ms. Oczywiście w jakimś High-frequency trading wydajność będzie miała ogromne znaczenie i tam w optymalizację wsadza się spore zasoby finansowe. Czyli w sumie będzie tak jak
która wymusi pisanie softu wielowątkowo i z uwzględnieniem czasu dostępu do cache różnych poziomów.


@tell_me_more: a to napisanie softweru wielowątkowo automatycznie go przyspiesza? Co z dużą ilością wątków? Co z algorytmami które nie mają szans na podzielenie i pójście na wątki? Zaraz się zacznie #!$%@? po muteksach i wydajność spadnie. T
@CukrowyWykop: wielowątkowość niekoniecznie oznacza używanie muteksów czy w ogóle jakiekolwiek lockowanie, patrz podejście clojure (software transactional memory i persystentne struktury danych).

I jak już cytujesz, to cytuj całość - wcześniej pisałem, że większość czasu wąskim gardłem nie jest wcale procesor, tylko czekanie na IO - wczytywanie strony pamięci RAM do cache, odczytywanie danych z dysku czy z sieci, itp. I w tym asynchroniczny kod z zależnościami zdefiniowanymi na niskim poziomie może