Ilya Zakharevich on Fri, 16 Aug 2024 02:04:38 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: 2.16.2-beta: 2.45× slowdown in forprime() |
On Thu, Aug 15, 2024 at 04:45:42PM -0700, Ilya Zakharevich wrote: > Comparing to the older versions, forprime() is perfectly OK at least > until 10^17. However, for 10^18 it slows down 2.45× times: > With older PARIs, the speed decreases to about 2*10^17, then practically > stabilizes at about 8.8 sec per 10^8 numbers. Contrary to this, With > newer PARIs, it slows down uniformly in the interval 10^17 .. 10^18: > > (16:35) gp > timeit(s,f) = my(t=gettime(), o=f()); if(#o, o=Str("\t",o)); printf("%s%7.3f%s\n",s,gettime()/1000,o); In fact, the situation is yet more interesting. With older PARI, the speed decreases to about 1.9e17, then SPEEDS UP abruptly, and keeps approximately constant: (16:51) gp > my(D=15, c, L=10^8); forstep(k=185,200,1, c=0; timeit(Strprintf("%d*10^%d\t",k, D), (()->forprime(p=k*10^D,k*10^D+L,c++);c))) 185*10^15 9.985 2514431 186*10^15 10.001 2514008 187*10^15 10.025 2514607 188*10^15 10.054 2513151 189*10^15 10.081 2513754 190*10^15 10.095 2511725 191*10^15 8.722 2512296 192*10^15 8.756 2513602 193*10^15 8.736 2512715 194*10^15 8.687 2510748 195*10^15 8.708 2512232 196*10^15 8.576 2513044 197*10^15 8.694 2512444 198*10^15 8.923 2512685 199*10^15 8.710 2511947 200*10^15 8.657 2509779 It seems as if older PARIs ignored high primelimit when sieving starting from 1.9e17 (which seems to be the GOOD thing to do!)5~. The newer version does not do this, so becomes too slow. Thanks, Ilya