On Sat, 15 Dec 2007, Martin Maechler wrote: > Hi Ivo, > >>>>>> "IU" == Ivo Ugrina <[EMAIL PROTECTED]> >>>>>> 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@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: [EMAIL PROTECTED] Iowa City, IA 52242 WWW: http://www.stat.uiowa.edu ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel