[Rd] Improvement of SignRank functions
Luke Tierney
luke at stat.uiowa.edu
Tue Dec 18 19:00:14 CET 2007
On Sat, 15 Dec 2007, Martin Maechler wrote:
> Hi Ivo,
>
>>>>>> "IU" == Ivo Ugrina <ivo at iugrina.com>
>>>>>> on Sat, 15 Dec 2007 14:13:10 +0100 writes:
>
> IU> Martin Maechler wrote:
> >> do you have evidence for your belief?
> >> i.e. a set of system.time(.) calls where you see the
> >> difference?
>
> IU> system.time(dsignrank(17511, 400))
> IU> user system elapsed
> IU> 1.010 0.120 1.145
> IU> system.time(dsignrank((0:17511), 400))
> IU> user system elapsed
> IU> 1.25 0.13 1.40
> IU> system.time(dsignrank((0:17511), 500))
> IU> user system elapsed
> IU> 2.040 0.220 2.296
> IU> system.time(psignrank((0:17511), 600))
> IU> user system elapsed
> IU> 20.670 0.580 21.403
> IU> system.time(qsignrank(0.56, 300))
> IU> user system elapsed
> IU> 0.700 0.050 0.753
> IU> ======================================
> IU> system.time(dsignrank(17511, 400))
> IU> user system elapsed
> IU> 0.070 0.000 0.078
> IU> system.time(dsignrank((0:17511), 400))
> IU> user system elapsed
> IU> 0.100 0.000 0.104
> IU> system.time(dsignrank((0:17511), 500))
> IU> user system elapsed
> IU> 0.160 0.000 0.164
> IU> system.time(psignrank((0:17511), 600))
> IU> user system elapsed
> IU> 16.330 0.370 16.729
> IU> system.time(qsignrank(0.56, 300))
> IU> user system elapsed
> IU> 0.020 0.010 0.029
>
>
>
> IU> system.time(dsignrank((0:20000), 600))
> IU> user system elapsed
> IU> 3.470 0.280 3.745
> IU> RAM: ~130MB
> IU> ======================================
> IU> system.time(dsignrank((0:20000), 600))
> IU> user system elapsed
> IU> 0.250 0.010 0.26
> IU> RAM: ~1MB
>
> that's quite convincing; thank you!
> and I can verify part of it on my computer.
>
> I think I'd just commit your signrank.c
> (with a few cosmetic changes) to the sources, right?
>
> *Not* using a static with all the previously computed counts
> is probably not possible without a (CPU time) efficiency loss;
> and to make this thread-safe one could use a "thread-global"
> array, but how to do that would really depend on the threading
> system used, and that's not at all given.
I'ts possible to handle this sort of thing with OpenMP, which is I
think the way we want to go, but it does require some care.
luke
>
> Thank you for your contribution!
> Martin
>
>
>
> >> BTW: If you had a smart idea to *not* use a static 'w' and still
> >> be memory efficient,
> >> that could lead to make that code "thread-safe", but I am
> >> not at all sure this is possible without using
> >> "thread-library C code".
>
> IU> I'll look into it.
>
>
> IU> With respect,
> IU> --
> IU> Ivo Ugrina
> IU> ICQ: 47508335 | www.iugrina.com
> IU> -------------------------------
> IU> baza matematickih pojmova
> IU> http://baza.iugrina.com
> IU> ---------------------------
> IU> anime, manga, Japan fanzin
> IU> http://yoshi.iugrina.com
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
--
Luke Tierney
Chair, Statistics and Actuarial Science
Ralph E. Wareham Professor of Mathematical Sciences
University of Iowa Phone: 319-335-3386
Department of Statistics and Fax: 319-335-3017
Actuarial Science
241 Schaeffer Hall email: luke at stat.uiowa.edu
Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu
More information about the R-devel
mailing list