Wpis z mikrobloga

@wytrzzeszcz: @panjerzyduzomierzy: @KrzaQ2: Zawsze zostają wstawki z asm, które czasami mogą się przydać.
Człowiek ZAWSZE (no chyba że to tak prosty kod że kompilator dał radę zrobić go optymalnie, i już mniej instrukcji się nie da) jest w stanie lepiej zoptymalizować kod niż kompilator jednak... wymaga to ogromnej wiedzy i ogromnej ilości czasu, tam gdzie stworzysz prosty 50 linijkowy kod w C i skompilujesz, zajmie ci to np 2h.
To w asmeblerze będziesz mielił kilkanaście godzin i wyjdzie ci kilkaset linijek.
Za to z tego co słyszałem popularne jest branie asemblera z skompilowanego kodu i ręczna jego optymalizacja, tu też trzeba ogromnej wiedzy i czasu.
A dużo nie zaoszczędzisz,z więc jak nie masz problemów z wydajnością to raczej nie warto.
Po prostu znając assemblera, nauczysz się pisać wydajniejszy kod w C, ale nie napiszesz wydajniejszego kodu w asmeblerze, tu już musisz mieć ogromną wiedzę i doświadczenie, a i
  • Odpowiedz
@wytrzzeszcz: Nie do końca to chciałem przekazać. Początkujący imo nie powinni się brać za asm. Ani czytanie ani pisanie. Potem na pewno fajnie przynajmniej rozumieć o co chodzi w kodzie asm. Pisanie czasem teƶ moƶe się przydać, ale powiedzmy, ƶe to dziedzina ekspertów i bardzo nietypowych małych zastosowań.
  • Odpowiedz
@wytrzzeszcz: Tak jak napisali wczesniej inni - asembler obecnie przydac sie moze w lepszym zrozumieniu tego jak działa komputer. W specyficznych wypadkach (i to zazwyczaj na jakiś niszowych sprzętach) możesz napisać lepszy kod.

Asembler ma prawo zadziałać lepiej na maszynach starych 1-2 potokowych, ale też nie zawsze - np taki Kiero wyciskający 7 poty ze starych maszyn pisze całość w C, a potem w asemblerze przepisuje fragmenty, jeśli wie, że
  • Odpowiedz
@GotoFinal: s/Człowiek/ekspert/. Wtedy ok, ALE weź pod uwagę następującą zmyśloną historię:
1) ekspert w 2005 napisał kod w asm, wszystko zajebiście zoptymalizowane, procesor, cache i ram czerwone z gorąca.
2) w 2008 pojawia się AVX
3) kod działa tak samo

a
  • Odpowiedz
@wytrzzeszcz ja tylko dorzucę że już kilka lat temu były artykuły naukowe w których używali systemu generującego z danego kodu C ogromną ilość (wszystkie?) możliwych wariantów asm i wybierającego najlepszy. Troche taka metoda Monte Carlo. O ile dobrze pamiętam w najgorszym wypadku taki automat dorównywał do kodu pisanego przez eksperta a niejednokrotnie go przewyższał. Google coś podobnego stosuje w kompilacji GWT do js.

Te wszystkie gadki o wyższości assemblera były prawdziwe
  • Odpowiedz
@KrzaQ2:
No odkryłeś cud, że jeśli zostaną użyte nowe instrukcje procesora to można przyspieszyć kod, wtedy export też może poprawić swój kod i znowu być szybszym.
I nikt w tym nie pisze całych programów, tylko właśnie wstawki, tam gdzie wiesz ze kompilator radzi sobie gorzej.
  • Odpowiedz
@KrzaQ2: a czy napisałem że to jest prostsze? :D zaznaczyłem że na to trzeba dużo czasu i umiejętności, bo takim tokiem rozumowania to dojdziemy do wniosku że najlepszym języka do pisania wszystkiego jest java itd.
Oczywiście że roboty jest więcej, ale czasem może się okazać ze to jest potrzebne, są to bardzo rzadkie przypadki, ale istnieją.
  • Odpowiedz