I mostly use adhoc mechanisms to find bottlenecks. I need to spend some time with jpm -- it had been unwieldy enough that I've not gotten familiar with it.
Thanks, -- Raul On Sat, Apr 10, 2021 at 10:37 AM 'Michael Day' via Beta <[email protected]> wrote: > > No reply? > So how do other people find the bottlenecks in their code if they don't > use jpm? > I know the query wasn't very specific. Sorry. > Thanks, > Mike > > On 08/04/2021 18:55, Michael Day wrote: > > Not really about this beta, but Henry had promised a repair of > > something wrong with > > jmf in beta-g. > > > > (Spoiler alert - the function is attempting to solve Euler Project > > Problem 754! FWIW, function > > "A" is considerably slower than Pari GP for smallish problems, but is > > 5-6 times faster than GP at > > N=100000 ! Probably wrong approach as it looks like taking ~10 hours > > on this laptop for the > > required problem size, N = 1e8. ) > > > > I've been getting this sort of trouble with jmf for some years, so > > it's unlikely to be the fault of > > J903 beta-h as such. I doubt if the exact specification of "A" is > > necessary - this happens for me > > when I'm trying to catch bottlenecks in functions that need to be > > speeded up. I can provide the > > auxiliary functions if required. > > > > > > NB. trying to find bottlenecks in "A": > > start_jpm_ 1000000000 > > 17857142 > > timer'<.A 10000' > > +---------+---------+ > > |3.7741699|517055464| > > +---------+---------+ > > showdetail_jpm_ 'A' > > recorded all lines > > used and max record count: 3,389,287 17,857,142 > > > > |index error: getdetail1 > > | lns=.sort(len#replno) {~(;repsno)i.stm > > > > NB. Listing of A in terminal session - I've added NB.s for this message > > A NB. left argument is a modulus if non-zero > > 3 : 0 NB. y is the problem-size > > M A y > > : > > NB. echo =. [ > > if. m =. x do. > > to =. m mvpower NB. define ^ * + % for modular arithemtic > > by =. m mtimes > > add =. m madd > > div =. m mdivide > > else. > > to =. <.@^ NB. or use standard ^ * + % if not finite > > by =. * > > add =. + > > div =. % > > end. > > N =. y > > mutab =. mu i. >: N NB. table of moebius function results e. _1 0 or 1 > > NB. echo > > facs =. 0 fpc N, m NB. calculate a table of factorials, modulo m > > if need > > NB. echo > > dtod =. 0, d to"0 d =. >:i.N NB. precalc d^d, modulo m if needed > > NB. echo > > facs =. facs div"0 dtod > > if. m do. > > invf =. facs mvpowerv m - 0 2 > > else. > > invf =. %facs > > end. > > facs =. facs,: invf NB. 2-row table of (!d)*d^d and its inverse > > NB. echo x: facs > > if. 100000 <: N do. > > smoutput 'done setting up tables' > > end. > > tn =. t =. 1 > > for_n. 2}.i.N+1 do. > > d =. }. /:~ allfactors n NB. Roger Hui's idiom > > tn =. n to 5 p: n NB. n^phi(n), using totient/Euler's phi > > mud =. mutab {~ n <.@% d > > ok =. 1 = | mud > > d =. ok#d > > mud =. 0 0 1 {~ ok#mud > > tn =. tn by by/ facs{~ mud,each d NB. tn **/ ((!d)/d^d)^mu(n\d) > > NB. echo n; x:tn > > t =. t by tn > > end. > > t > > ) > > > > > > Thanks again, > > > > Mike > > > > > -- > This email has been checked for viruses by Avast antivirus software. > https://www.avast.com/antivirus > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
