-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!goblin1!goblin.stu.neva.ru!newsreader4.netcologne.de!news.netcologne.d
e!nx02.iad01.newshosting.com!newshosting.com!newsfeed.neostrada.pl!unt-exc-01.n
ews.neostrada.pl!unt-spo-a-02.news.neostrada.pl!news.neostrada.pl.POSTED!not-fo
r-mail
Date: Sun, 06 Jul 2014 18:25:56 +0200
From: "Bogdan (bogdro)" <b...@p...gazeta.pl>
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:24.0) Gecko/20100101 Thunderbird/24.6.0
MIME-Version: 1.0
Newsgroups: pl.comp.programming
Subject: Re: era asemblera
References: <9...@g...com>
In-Reply-To: <9...@g...com>
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: 8bit
Lines: 63
Message-ID: <53b97895$0$2379$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 37-128-50-64.adsl.inetia.pl
X-Trace: 1404663959 unt-rea-a-01.news.neostrada.pl 2379 37.128.50.64:10768
X-Complaints-To: a...@n...neostrada.pl
Xref: news-archive.icm.edu.pl pl.comp.programming:206219
[ ukryj nagłówki ]W dniu 05.07.2014 13:08, firr pisze:
> z tego co obserwuje jesli ktos chce pisac
> zoptymalizowane programy (np w c) to bez
> asemblera nie mozna sie obejsc
> (Pytanie czy to twierdzenie jest do końca scisłe,
> ale chyba jest) - w obliczu sse (moze ze skalarnym asmem byloby nieco inaczje) i
tego ze obecne optymalizatory
> sa pod tym katem beznadziejne (znowu, moze gdyby
> jezyk c byl rozszerzony sytuacje uleglaby pewnej
> zmianie, nie jestem do konca pewien) sprawa ma sie
> po prostu tak ze trzeba pisac w asmie i "nie ma bata"
> 9przez asma moge tez rozumiec intrinsiki ale podobno nawet to wspolczesne
kompilatory robia dosyc kiepsko)
>
> slowem kompilatory podobno (jak to powtarzaja co poniektorzy) optymalizuja dobrze
kod tylko ze wychodzi na to ze moze caly za wyjatkiem hotspotow ;/ [uzywam tego slowa
bo jakos poki co nie znam lepszego] bo jak
> przychodzi co do czego okazuje sie ze takiego hotspota trzeba przepisac w asmie i
nawet nie ma tu mowy o zadnej konkurencji, sciganiu sie z kompilatorem - kompilator
po prostu lezy - takie sa moje
> doswiadczenia [i wbrew temu co mowia liczni internetowi zamulacze przepisywanie
hotspotow w asmie moze dzis bardziej oplacalne (jesli komus zalezy na szybkosci kodu)
niz kiedys]
>
> (sa to optymistyczne 'wiesci' (jesli to mozna nazwac wiesciami))
Różnie z tym bywa.
Np. taki GCC ma opcje tuningujące kod wynikowy już pod najnowsze lub
prawie najnowsze procesory i potrafi korzystać z SSE czy innych
technologii, które są obce tym kompilatorom C, które zatrzymały się na
386 lub 686 (w sensie operacji skalarnych, bez MMX).
Przy często używanych operacjach, które kompilatory już umieją
optymalizować, może być ciężko je prześcignąć.
Ale kompilatory mogą sobie gorzej radzić w "intensywnych
obliczeniowo" fragmentach kodu, a poza tym np. biblioteki matematyczne
mogą nie być "gotowe" na optymalizacje czy używanie SSE.
Kompilatory mogą sobie też gorzej radzić z optymalizacjami na
poziomie całego programu (choć GCC też ma jakieś opcje z tym
związane), typu "przez cały żywot programu rejestr X będzie trzymał
moją stałą Y, aby był do niej szybki dostęp").
Czy da się prześcignąć kompilator? Sądzę, że tak. Może nie zawsze i
wszędzie, ale w pewnych sytuacjach według mnie jest to możliwe. W
końcu kompilator ma kompilować różne programy, a nie tylko ten nasz
jedyny, a zestaw optymalizacji dla jednej sytuacji może nie podziałać
dobrze w innej.
To wszystko też z raczej zasłyszanych rzeczy. Sam mam niewielkie
doświadczenie w porównywaniu programów C z asmem, ale pamiętam
mgliście jakąś historię, gdzie były pisane jakieś programy numeryczne,
chyba po milion iteracji i programy w C działały w "czasach
obiadowych" (tzn. można było sobie uruchomić program, ugotować obiad,
zjeść go, wrócić i może był wynik :) ), a podobne programy w
asemblerze kończyły pracę w czasie rzędu pojedynczych minut.
W skrócie: to, co da się wycisnąć, zależy od:
- kompilatora,
- człowieka,
- konkretnego kawałka kodu.
Jeśli czujesz, że Twój kod działa nie dość szybko w punkcie, w którym
nie da się go już bardziej zoptymalizować w języku wyższego poziomu,
spróbuj ten kawałek przepisać na asma, resztę pozostaw kompilatorowi
do optymalizacji.
No i kolejność operacji:
- implementujemy działający kod,
- wybieramy lepsze algorytmy (np. sortowania),
- optymalizujemy.
--
Pozdrawiam/Regards - Bogdan (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux): http://bogdro.ciki.me
Grupy dyskusyjne o asm: pl.comp.lang.asm alt.pl.asm alt.pl.asm.win32
www.Xiph.org www.TorProject.org Soft(EN): http://bogdro.ciki.me/soft
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-06-27 Re: Prywatny parking? Pierwsze 10 minut bezplatnie
- 2024-06-27 A co mnie to koooorwa obchodzi?
- 2024-06-28 nawigacja satelitarna
- 2024-06-28 SmartLife/Tuya i osuszanie -- mordowanie z zimną krwią...
- 2024-06-27 położyłem kafelki
- 2024-06-28 Łódź => International Freight Forwarder <=
- 2024-06-28 Łódź => Spedytor Międzynarodowy <=
- 2024-06-28 Gdańsk => Head of International Freight Forwarding Department <=
- 2024-06-28 Sopot => Team Leader E-Commerce for Foreign Markets <=
- 2024-06-28 Warszawa => Senior React Native Developer <=
- 2024-06-28 Warszawa => Frontend Developer (React) <=
- 2024-06-28 Warszawa => Software .Net Developer <=
- 2024-06-28 Warszawa => Frontend Developer (React) <=
- 2024-06-28 Warszawa => Programista Full Stack .Net <=
- 2024-06-28 Warszawa => Frontend Developer (React) <=