In short, J raw matrix multiplication is about 9x slower than others in the 
test, and it seems all of them use blas library for matrix multiplication. ( r 
was slower but I tried to replace rblas.dll with a faster gotoblas and it 
immediately pulled r' speed on this test on par with others.)

On May 7, 2013, at 8:36 AM, Ric Sherlock <[email protected]> wrote:

> Duh!
> Thanks. Must be time for bed!!!
> 
> 
> On Wed, May 8, 2013 at 12:29 AM, Raul Miller <[email protected]> wrote:
> 
>> multiplying milliseconds by 1000 would give microseconds.
>> 
>> also, the original post says "in milsec"
>> 
>> FYI,
>> 
>> --
>> Raul
>> 
>> On Tue, May 7, 2013 at 8: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
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to