Article View: pl.comp.lang.c
Article #310031Re: Optymalizacja kodu
From: (fir)
Date: Fri, 27 Dec 2019 18:48
Date: Fri, 27 Dec 2019 18:48
172 lines
8594 bytes
8594 bytes
W dniu piątek, 27 grudnia 2019 08:45:01 UTC+1 użytkownik M.M. napisał: > On Thursday, December 26, 2019 at 9:57:09 AM UTC+1, Wojciech Muła wrote: > > Sprawdź, jak się sprawuje ten algorytm https://lemire.me/blog/2019/07/03/a-fast-16-bit-random-number-generator/ > > Mam pytanie, czy można mieć kod tego generatora w swoich programach? Jest > jakaś licencja? > > Pierwsza uwaga: zdecydowałem się brać 16 bitów z tego generatora, jakby > brać 32 bity to powinien być dwa razy szybszy, ale nie wiem jak z > jakością generowanych liczb: > > Z takich testów na kolanie wynika, że generowanie 2^34 liczb tym > generatorem zajmuje (w moim środowisku, w mojej implementacji) > niecałe 53 sekundy: > > time ./MRndCPP > 1187849313 > 1737517433 > 2503948343 > 1106027281 > 4156358698 > 3197141134 > 216794925334129 > > real 0m52.735s > user 0m52.678s > sys 0m0.044s > > > Dla porównania standardowa implementacja generatora MT19937_64 > zajmuje niecałe 101 sekund (w tych samych warunkach): > > time ./MRndCPP > 655014610 > 3386838144 > 192173729 > 1854295942 > 901277944 > 864046005 > 271149186579787 > > real 1m40.958s > user 1m40.701s > sys 0m0.220s > > > Kilka testów z diehardera zaliczył: > > time ./MRndCPP | dieharder -g200 -a -k2 > #=============================================================================# > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # > #=============================================================================# > rng_name |rands/second| Seed | > stdin_input_raw| 4.05e+07 |3620339557| > #=============================================================================# > test_name |ntup| tsamples |psamples| p-value |Assessment > #=============================================================================# > diehard_birthdays| 0| 100| 100|0.28928174| PASSED > diehard_operm5| 0| 1000000| 100|0.92947482| PASSED > diehard_rank_32x32| 0| 40000| 100|0.09239713| PASSED > diehard_rank_6x8| 0| 100000| 100|0.10209052| PASSED > diehard_bitstream| 0| 2097152| 100|0.51264249| PASSED > diehard_opso| 0| 2097152| 100|0.58815248| PASSED > diehard_oqso| 0| 2097152| 100|0.24822190| PASSED > diehard_dna| 0| 2097152| 100|0.06963961| PASSED > diehard_count_1s_str| 0| 256000| 100|0.85895222| PASSED > diehard_count_1s_byt| 0| 256000| 100|0.99856981| WEAK > diehard_parking_lot| 0| 12000| 100|0.28041223| PASSED > diehard_2dsphere| 2| 8000| 100|0.97118447| PASSED > diehard_3dsphere| 3| 4000| 100|0.14383896| PASSED > diehard_squeeze| 0| 100000| 100|0.58457683| PASSED > diehard_sums| 0| 100| 100|0.97203656| PASSED > diehard_runs| 0| 100000| 100|0.20272162| PASSED > diehard_runs| 0| 100000| 100|0.08707306| PASSED > diehard_craps| 0| 200000| 100|0.55675752| PASSED > diehard_craps| 0| 200000| 100|0.09543829| PASSED > ^C > > real 3m20.230s > user 3m27.124s > sys 0m9.833s > > > Druga seria: > > time ./MRndCPP | dieharder -g200 -a -k2 > #=============================================================================# > # dieharder version 3.31.1 Copyright 2003 Robert G. Brown # > #=============================================================================# > rng_name |rands/second| Seed | > stdin_input_raw| 4.22e+07 |2165006581| > #=============================================================================# > test_name |ntup| tsamples |psamples| p-value |Assessment > #=============================================================================# > diehard_birthdays| 0| 100| 100|0.55410893| PASSED > diehard_operm5| 0| 1000000| 100|0.59858393| PASSED > diehard_rank_32x32| 0| 40000| 100|0.64476682| PASSED > diehard_rank_6x8| 0| 100000| 100|0.58918209| PASSED > diehard_bitstream| 0| 2097152| 100|0.15585271| PASSED > diehard_opso| 0| 2097152| 100|0.83986652| PASSED > diehard_oqso| 0| 2097152| 100|0.33147055| PASSED > diehard_dna| 0| 2097152| 100|0.57772809| PASSED > diehard_count_1s_str| 0| 256000| 100|0.35450456| PASSED > diehard_count_1s_byt| 0| 256000| 100|0.56128063| PASSED > diehard_parking_lot| 0| 12000| 100|0.91059716| PASSED > diehard_2dsphere| 2| 8000| 100|0.20089094| PASSED > diehard_3dsphere| 3| 4000| 100|0.83251195| PASSED > diehard_squeeze| 0| 100000| 100|0.98232982| PASSED > diehard_sums| 0| 100| 100|0.03112434| PASSED > diehard_runs| 0| 100000| 100|0.14326371| PASSED > diehard_runs| 0| 100000| 100|0.85723327| PASSED > diehard_craps| 0| 200000| 100|0.06862104| PASSED > diehard_craps| 0| 200000| 100|0.91890513| PASSED > ^C > > real 4m3.343s > user 4m12.231s > sys 0m11.024s > > Pobieżne testy z practrand też przechodzi: > time ./MRndCPP | ../../PractRand/RNG_test stdin > RNG_test using PractRand version 0.93 > RNG = RNG_stdin, seed = 0xf0ae5889 > test set = normal, folding = standard(unknown format) > > rng=RNG_stdin, seed=0xf0ae5889 > length= 128 megabytes (2^27 bytes), time= 2.6 seconds > no anomalies in 151 test result(s) > > rng=RNG_stdin, seed=0xf0ae5889 > length= 256 megabytes (2^28 bytes), time= 6.0 seconds > no anomalies in 162 test result(s) > > rng=RNG_stdin, seed=0xf0ae5889 > length= 512 megabytes (2^29 bytes), time= 11.7 seconds > no anomalies in 171 test result(s) > > rng=RNG_stdin, seed=0xf0ae5889 > length= 1 gigabyte (2^30 bytes), time= 23.2 seconds > no anomalies in 183 test result(s) > > rng=RNG_stdin, seed=0xf0ae5889 > length= 2 gigabytes (2^31 bytes), time= 46.2 seconds > no anomalies in 194 test result(s) > > rng=RNG_stdin, seed=0xf0ae5889 > length= 4 gigabytes (2^32 bytes), time= 87.7 seconds > no anomalies in 203 test result(s) > > rng=RNG_stdin, seed=0xf0ae5889 > length= 8 gigabytes (2^33 bytes), time= 171 seconds > Test Name Raw Processed Evaluation > BCFN(2+2,13-0,T) R= -8.3 p =1-2.4e-4 unusual > ...and 214 test result(s) without anomalies > > rng=RNG_stdin, seed=0xf0ae5889 > length= 16 gigabytes (2^34 bytes), time= 340 seconds > no anomalies in 226 test result(s) > > ^C > > real 5m46.927s > user 5m43.989s > sys 0m12.371s > > > Na lepsze testy trzeba poczekać, chyba że z powodu licencji będę musiał > wyrzucić to ze swojego zestawu generatorów. > > Pozdrawiam a co z dezasemblacja? to calkiem proste a wiele by wyjasnilo
Technical Details
Message-ID:
<aa15d34a-292a-42ed-86cd-146377009a51@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.unit0.net!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.160.216.MISMATCH!g89no1692046qtd.0!news-out.google.com!w29ni298qtc.0!nntp.google.com!g89no1692041qtd.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>Show Full Headers
Complete Article Headers
X-Received: by 2002:ac8:32ec:: with SMTP id a41mr39891624qtb.235.1577472501293; Fri, 27 Dec 2019 10:48:21 -0800 (PST) X-Received: by 2002:a25:e7c9:: with SMTP id e192mr6141929ybh.253.1577472501061; Fri, 27 Dec 2019 10:48:21 -0800 (PST) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!news.unit0.net!feeder1.cambriumusenet.nl!feed.tweak.nl!209.85.160.216.MISMATCH!g89no1692046qtd.0!news-out.google.com!w29ni298qtc.0!nntp.google.com!g89no1692041qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mail Newsgroups: pl.comp.lang.c Date: Fri, 27 Dec 2019 10:48:20 -0800 (PST) In-Reply-To: <82f8e967-0d0e-4bae-b005-aacb301b2349@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: google-groups.googlegroups.com; posting-host=5.172.255.229; posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN NNTP-Posting-Host: 5.172.255.229 References: <ed3041b7-c05f-43f3-887a-9a12a9633741@googlegroups.com> <2104ea83-5daa-4752-9a63-ed3346a14082@googlegroups.com> <82f8e967-0d0e-4bae-b005-aacb301b2349@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <aa15d34a-292a-42ed-86cd-146377009a51@googlegroups.com> Subject: Re: Optymalizacja kodu From: "(fir)" <profesor.fir@gmail.com> Injection-Date: Fri, 27 Dec 2019 18:48:21 +0000 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit