Article View: pl.comp.lang.c
Article #310039Re: Optymalizacja kodu
From: M.M.
Date: Sat, 28 Dec 2019 10:50
Date: Sat, 28 Dec 2019 10:50
81 lines
6889 bytes
6889 bytes
On Saturday, December 28, 2019 at 10:26:57 AM UTC+1, (fir) wrote: > W dniu sobota, 28 grudnia 2019 10:11:26 UTC+1 użytkownik (fir) napisał: > > W dniu sobota, 28 grudnia 2019 03:44:41 UTC+1 użytkownik M.M. napisał: > > > On Friday, December 27, 2019 at 10:01:25 PM UTC+1, (fir) wrote: > > > > W dniu piątek, 27 grudnia 2019 21:54:14 UTC+1 użytkownik M.M. napisał: > > > > > On Friday, December 27, 2019 at 8:18:46 PM UTC+1, (fir) wrote: > > > > > > W dniu piątek, 27 grudnia 2019 20:12:09 UTC+1 użytkownik M.M. napisał: > > > > > > > On Friday, December 27, 2019 at 7:48:22 PM UTC+1, (fir) wrote: > > > > > > > > a co z dezasemblacja? to calkiem proste a wiele by wyjasnilo > > > > > > > > > > > > > > Jest kilka problemów z tym. Nie znam zasad łączenia instrukcji w pary/trójki > > > > > > > żeby procesor mógł je wykonać równocześnie, o czasach wykonania nie wspomnę. > > > > > > > No i bym musiał procedurę zostawić w asemblerze, dopracować ją (czytaj: napisać > > > > > > > lepiej niż kompilator) i utrzymywać w asemblerze. Wiec nawet jak znajdę > > > > > > > wyjaśnienie, to chyba nic mi z tego. > > > > > > > > > > > > > > Pozdrawiam > > > > > > > > > > > > chodzi o dezasemblacje i zobazenie co sie zmienilo miedzy ta wolniejsza a szybsza wersje a nie o pisanie asma (ktore nie jest zreszta wcale takie trudne mysle ze idzie sie nauczyc w dzien (choc sam nie pisalme jeszcze 64 bitowego asma) > > > > > > > > > > Zgodzę się, że dla kogoś kto biegle zna i używa asemblera na 386, byłby to > > > > > dobry przykład jak należy, a jak nie należy pisać wydajny kod w asemblerze. > > > > > Ja piszę w C++, dla mnie wstawka jednej instrukcji w asemblerze (np. to > > > > > popcount, xchange, rot) maksymalne użycie asemblera. Taki ktoś jak ja > > > > > chyba nie wyniesie z tego żadnej nauki? > > > > > > > > > jak to nie - zdezasembluj a dostaniesz odpowiedz na swoje pytaie czemu jest szybciej..jak nie umiesz czytac asma to zapostuj go na grupie tylko trzeba by zdizasemblowac odpowiednie kawalki > > > > > > Nie chciałem powiedzieć, że nie można się dowiedzieć z asemblera, tylko że jak > > > się dowiem, to nie spożytkuję tej wiedzy w innych programach. Ale nie ma > > > problemu, to tylko dodanie opcji -S do kompilatora: > > > > > > https://pastebin.com/xriqX0SS > > > > > > Które to kawałki - trudno powiedzieć. Może testy oddziela instrukcja: > > > > > > movabsq $6364136223846793005 > > > > > > Pozdrawiam > > > > > > Pozdrawiam > > > > potrzebujesz napisac test w minimalnej wersji w c (tak zeby nie nylo niepotrzebnych wywolan) po czym zdizasemblowac wlasnie ten kawalek > > (najlepiej w tej normalnej skladni a nie w tej i z komentarzami) > > > > tutaj ja bym znalazl latwo te kawalki ale nie je pisalem bazowy kod i nie mam go w pamieci (zwlaszcza ze jest napisany w durnym dla mnie c++) po co tu sa wywolywane te wywolania do marsenne twister mialo chodzic o oryginalny kod z loopami, ciezko mi zmapowac to na kod w c ktorego nie znam, choc generalnie widac ze jest jak kawa na lawe - jako ze pokazuje nazwy funkcji ktore wola wywolaj sobie cos o uniklanej nazwie na poczatklu i koncu kawalka i znajdz przec control+f w teksiecie > > > > widac ze np jedna z oimawianych petli jest > > > > .L76: > > movl 28832(%rsp), %eax # rndBuf.select, D.82123 > > leal 1(%rax), %edx #, tmp522 > > testb $1, %al #, D.82123 > > movl %edx, 28832(%rsp) # tmp522, rndBuf.select > > jne .L138 #, > > movq 28824(%rsp), %rbp # rndBuf.i2, D.82124 > > cmpq %r14, %rbp # tmp566, D.82124 > > je .L139 #, > > .L72: > > leaq 4(%rbp), %rax #, tmp555 > > movq %rax, 28824(%rsp) # tmp555, rndBuf.i2 > > movl 0(%rbp), %eax # *_756, > > addq %rax, %r13 # D.82120, sum > > subq $1, %r12 #, D.82120 > > jne .L76 #, > > .L137: > > > > > > ale nei wiem dokladnie ktory to kawalek jak mowie trzeba to zdizasemblowac kawalkami i najlepiej napisac to w c wtedy widac co i jaki nie ma tez w tym nic trudnego tyle ze mi nieprzyjemnie jest debugowac czyjs kod na ktory nie moge patrzec bo jest w c++ i nie mam ogarniete jak on w calosci wyglaa > > testowanie i optymalizowanie wymaga duzo przepisywania tak ze mysle ze kolega powinien byc gotow na rozbicie tych 5-ciu czy tam ile testow na 5 minimalnych kilkolinijkowcow w c i zdezasemblowanie ich Nadal nie rozumiem jakie korzyści z analizy asemblera będę miał jako programista C++. Kiedyś byle jak napisana procedura w AMS działała 3 razy szybciej niż porządnie napisana w C i z 5 razy szybciej niż w C++. Ale te czasy minęły, teraz trzeba bardzo dużo pracy włożyć aby czasami pokonać kompilator o parę procent. Ja raczej bym chciał lepiej wiedzieć jak pisać w C++ aby kompilator generował efektywny kod przy zachowaniu chociaż minimalnej przejrzystości kodu i podatności na rozbudowę. Pozdrawiam
Technical Details
Message-ID:
<02fdc426-45d4-42e3-98a5-23316f63d901@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!news.unit0.net!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.160.216.MISMATCH!g89no3465682qtd.0!news-out.google.com!w29ni363qtc.0!nntp.google.com!g89no3465676qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mailReferences:
<ed3041b7-c05f-43f3-887a-9a12a9633741@googlegroups.com> <2104ea83-5daa-4752-9a63-ed3346a14082@googlegroups.com> <82f8e967-0d0e-4bae-b005-aacb301b2349@googlegroups.com> <aa15d34a-292a-42ed-86cd-146377009a51@googlegroups.com> <00ddf4f0-f30c-413a-bda9-2ecd442ad84a@googlegroups.com> <003763c5-828f-4181-980c-f01f81e2a2c8@googlegroups.com> <d9d3d2f0-277e-4fa8-846d-d0784f45bc93@googlegroups.com> <efadabbf-295a-4f56-a5bf-d69d7eb7647d@googlegroups.com> <e46f3a29-ca94-427d-b0e0-fa791a51fadf@googlegroups.com> <31b3375d-ef24-40d7-a6db-a41e0fe5ac23@googlegroups.com> <4a7c96ab-288a-4e9a-a9a1-70c78fd578a1@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 2002:a37:674d:: with SMTP id b74mr48289820qkc.396.1577530209785; Sat, 28 Dec 2019 02:50:09 -0800 (PST) X-Received: by 2002:a25:cacc:: with SMTP id a195mr39841281ybg.165.1577530209551; Sat, 28 Dec 2019 02:50:09 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!feeder.erje.net!2.eu.feeder.erje.net!news.unit0.net!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.160.216.MISMATCH!g89no3465682qtd.0!news-out.google.com!w29ni363qtc.0!nntp.google.com!g89no3465676qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Sat, 28 Dec 2019 02:50:09 -0800 (PST) In-Reply-To: <4a7c96ab-288a-4e9a-a9a1-70c78fd578a1@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=77.254.46.242; posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj NNTP-Posting-Host: 77.254.46.242 References: <ed3041b7-c05f-43f3-887a-9a12a9633741@googlegroups.com> <2104ea83-5daa-4752-9a63-ed3346a14082@googlegroups.com> <82f8e967-0d0e-4bae-b005-aacb301b2349@googlegroups.com> <aa15d34a-292a-42ed-86cd-146377009a51@googlegroups.com> <00ddf4f0-f30c-413a-bda9-2ecd442ad84a@googlegroups.com> <003763c5-828f-4181-980c-f01f81e2a2c8@googlegroups.com> <d9d3d2f0-277e-4fa8-846d-d0784f45bc93@googlegroups.com> <efadabbf-295a-4f56-a5bf-d69d7eb7647d@googlegroups.com> <e46f3a29-ca94-427d-b0e0-fa791a51fadf@googlegroups.com> <31b3375d-ef24-40d7-a6db-a41e0fe5ac23@googlegroups.com> <4a7c96ab-288a-4e9a-a9a1-70c78fd578a1@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <02fdc426-45d4-42e3-98a5-23316f63d901@googlegroups.com> Subject: Re: Optymalizacja kodu From: "M.M." <mmarszik@gmail.com> Injection-Date: Sat, 28 Dec 2019 10:50:09 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit