[Rd] Improvement of SignRank functions
Martin Maechler
maechler at stat.math.ethz.ch
Sat Dec 15 19:44:59 CET 2007
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.
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
More information about the R-devel
mailing list