I should have included a reference: http://www.jsoftware.com/help/dictionary/dx006.htm
On Wed, May 8, 2013 at 12:15 AM, Ric Sherlock <[email protected]> wrote: > Your timeit verb is defined as 1000 times the result of 6!:2 > > Could it be that you are expecting the result of 6!:2 to be milliseconds, > when it is actually already reporting seconds? > > > On Tue, May 7, 2013 at 12:00 PM, elton wang <[email protected]> wrote: > >> Julia is a new number crunching language that claims to have near c >> speed. On their homepage there is a set of benchmark to compare Julia with >> matlab/python/R etc. I made a try to add J into the table.Please see table >> below for my results. All programs runs on a windows 64 bit machine. My >> script enclosed at the end of this message. Welcome to improve it since I >> dont have any practical experience on J other than toy exercises. >> >> Please see http://julialang.org/ for the offical Julia benchmarks, and >> links therein for source codes of other languages. (like >> https://github.com/JuliaLang/julia/blob/master/test/perf/perf.m for the >> matlab code.) >> >> >> >> note that in the random matrix multiply test, J lags behind all other >> peers. The code I use is >> >> rand_nn =. 0 ?@$~ 2 # ] >> mp =. +/ . * >> randmatmul =. rand_nn mp rand_nn >> 1000 * 6!:2 'randmatmul 1000' >> >> I suspect that other languages use some library like BLAS for matrix >> rather than raw calculation. Is there a way to speed up code above? >> >> results: >> in milsec Julia Matlab2013a R3.0.0 Python3.3+numpy(MKL) J801 >> >fib <1 123 60 4 11 >> >parse_int <1 163 10 5 7 >> >mandel <1 13 230 8 47 >> >quicksort <1 45 30 23 11 >> >pi_sum 30 48 810 1192 64 >> >rand_mat_stat 20 60 150 261 65 >> >rand_mat_mul 210 216 880 90 1768 >> > >> > >> > >> >benchmark code: >> > >> >timeit =. 1000 * 6!:2 >> > >> >> >> >NB. double recursive fib. >> >fib =. (-&2 +&$: -&1) ^: (1&<) >> > >> >> >> >timeit 'fib 20' >> > >> >> >> >NB. parse int >> >parsintPerf =. 3 : 0 >> >for. i.y do. >> >a =. ?<:2^32x >> >s =. ":a >> >b =. ".s >> >assert b = a >> >end. >> >) >> > >> >> >> >timeit 'parsintPerf 1000' >> > >> >> >> >NB. mandel >> >mandel =. 3 : 0 >> >c =. y >> >m =. 0 >> >for_n. i.80 do. >> >if. 2 <|y do. m =.n break. end. >> >y =. c + *:y >> >m =. n >> >end. >> >) >> > >> >> >> >assert 14628 = +/+/ mandel"0 (_2 + 0.1*i.26) j./ (_1 + 0.1*i.21) >> >timeit '+/+/ mandel"0 (_2 + 0.1*i.26) j./ (_1 + 0.1*i.21)' >> > >> >> >> >NB. quicksort >> >quicksort=: (($:@(<#[) , (=#[) , $:@(>#[)) ({~ ?@#)) ^: (1<#) >> >timeit 'quicksort ? 5000 $ 0' >> > >> >> >> >NB. pi sum >> >pisum =. 3 : 'for. i.500 do. +/ %*:>:i.y end.' >> >assert '1e_12 > | _1.644834071848065 + pisum 10000' >> >timeit 'pisum 10000' >> > >> >> >> >NB. random matrix multiply. >> >rand_nn =. 0 ?@$~ 2 # ] >> >mp =. +/ . * >> >randmatmul =. rand_nn mp rand_nn >> >timeit 'randmatmul 1000' >> > >> >> >> >NB. rand mat stats/ >> >load 'stats/base' >> >randn_nn =. [: normalrand 2 # ] >> >trace =. [: +/ (<0 1)&|: >> >randstats =. 3 : 0 >> >n =.5 >> >v =. 0 >> >w =. 0 >> >for. i.y do. >> >a =. randn_nn n >> >b =. randn_nn n >> >c =. randn_nn n >> >d =. randn_nn n >> >P =. a,.b,.c,.d >> >Q =. (a,.b),c,.d >> >PP =. P mp |:P >> >QQ =. Q mp |:Q >> >v =.v, trace PP mp PP mp PP mp PP >> >w =. w, trace QQ mp QQ mp QQ mp QQ >> >end. >> >((stddev % mean) v), ((stddev % mean) w) >> >) >> > >> >> >> >timeit 'randstats 1000' >> > >> > >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> > > ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
