🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #217882

Re: Ile cykli zajmuje mnożenie liczb 64-bitowych?

#217882
From: Bogdan
Date: Sun, 14 May 2023 09:26
34 lines
3068 bytes
On 13/05/2023 19:43, osobli...@gmail.com wrote:
> Swoją drogą mierzę sobie względną szybkość generatorów PRNG za pomocą:
> 
> https://quick-bench.com
> 
> Jedyne sensowne zestawienie, po zliczeniu przez mnie ręcznie liczby cykli na operacje (wynik 22 do 13), które wykonują algorytmy, dostaję, gdy włączam optim=None. Jeżeli zaś włączę OFast xoroshiro dostaje takiego przyspieszenia, że wyprzedza drugi PRNG, według tego benchmarku.
> 
> W samym xoroshiro liczę operację:
> 
> const uint64_t s0 = s[0];
> 
> jako jeden cykl, bo następuje wywołanie zmiennej z tablicy. Ale nie jestem pewien, czy to tak należy szacować.


  To zależy od poziomu optymalizacji.
  Bez optymalizacji na samo to wziąłbym 1 cykl na kopię z pamięci do 
rejestru i 1 na kopię z rejestru do innej pamięci. Ale wspomniany 
dokument podaje np. 3 cykle na kopiowanie do pamięci, więc nawet to 
nie jest takie oczywiste.
  Z optymalizacją jest szansa, że "s0" siedzi w rejestrze, więc 
wystarczy pewnie 1 cykl na załadowanie.
  Oczywiście, jeśli s[0] jest ułożone na równym adresie.
  Oczywiście, jeśli s[0] siedzi w cache, bo jeśli nie, to w najgorszym 
przypadku mogą być może dziesiątki, jak nie setki cykli na pobranie z 
głównej pamięci.
  I pewnie jeszcze różne inne warunki, więc tabelki tabelkami, ale 
najlepiej albo pomierzyć (RDTSC), albo użyć narzędzi mówiących, co ile 
potrwa (kiedyś było np. jakieś VTune Analyzer).

-- 
Pozdrawiam/Regards - Bogdan                     (GNU/Linux & FreeDOS)
Kurs asemblera x86 (DOS, GNU/Linux):            http://bogdro.evai.pl
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.evai.pl/soft
Technical Details
Message-ID: <u3q9gj$2jdsa$1@dont-email.me>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
References: <986309a4-5abd-46de-9d99-25bf51ba6144n@googlegroups.com> <u3o5jn$248lr$1@dont-email.me> <ae1c2360-6eb1-47bc-b3e1-9b5b58b8e7f3n@googlegroups.com> <f875c31f-359e-4600-82a1-396a79d88eb7n@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!2.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: Bogdan <bogdan@poczta.invalid>
Newsgroups: pl.comp.programming
Subject: Re: Ile cykli zajmuje mnożenie liczb 64-bitowych?
Date: Sun, 14 May 2023 11:26:42 +0200
Organization: A noiseless patient Spider
Lines: 35
Message-ID: <u3q9gj$2jdsa$1@dont-email.me>
References: <986309a4-5abd-46de-9d99-25bf51ba6144n@googlegroups.com> <u3o5jn$248lr$1@dont-email.me> <ae1c2360-6eb1-47bc-b3e1-9b5b58b8e7f3n@googlegroups.com> <f875c31f-359e-4600-82a1-396a79d88eb7n@googlegroups.com>
MIME-Version: 1.0
Injection-Date: Sun, 14 May 2023 09:26:43 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="31ce3a6f1479b310e51153983aa41509"; logging-data="2733962"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX181JwHbsEXheyrRUHs5+qVh"
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.0
Cancel-Lock: sha1:CnV1JSUL07JvbN2A42YOaITs2Mw=
In-Reply-To: <f875c31f-359e-4600-82a1-396a79d88eb7n@googlegroups.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit