On Fri, 20 Sep 2019, Artur Tarassow wrote:

[commenting on a function written by Jack]

> Interesting to see that this hansl-based version almost as fast as
> compared to the native msample() function:
>
> <hansl>
> clear
> set verbose off
>
> function matrix sample_wo_rep (const matrix X,
>                               const scalar k)
>     scalar n = rows(X)
>     if k > n
>         funcerr "what?"
>     endif
>     matrix sel = ranking(muniform(n,1))
>     return X[sel[1:k],]
> end function
>
> # Parameters
> scalar R = 100
> scalar C = 100
> scalar SIZE = 5
> if SIZE>R
>     stop
> endif
> scalar RUNS = 10000
>
> matrix X = mnormal(R, C)
>
> matrix runtime = zeros(RUNS, 2)
>
> loop algo = 1..2 -q
>     loop i=1..RUNS -q
>         set stopwatch
>        if algo
>            matrix res = sample_wo_rep(X, SIZE)
>        else
>            matrix res = msample(X, SIZE)
>        endif
>        runtime[i, algo] = $stopwatch
>    endloop
> endloop
>
> printf "Mean runtime\n%12.9f\n", meanc(runtime)
> printf "Ratio of Jack-to-msample() = %.3f\n",
> meanc(runtime[,1])/meanc(runtime[,2])

Unfortunately this test is running sample_wo_rep against itself: algo
runs from 1 to 2 so "if algo" is always true. If we substitute the
condition "if algo == 1" we get quite different results. For example,
with Artur's parameter values:

Mean runtime
 0.000027866 0.000000776

Ratio of Jack-to-msample() = 35.932

Allin
_______________________________________________
Gretl-users mailing list -- gretl-users@gretlml.univpm.it
To unsubscribe send an email to gretl-users-le...@gretlml.univpm.it
Website: 
https://gretlml.univpm.it/postorius/lists/gretl-users.gretlml.univpm.it/

Reply via email to