[R] how to run R as a daemon
Laurent Faisnel
laurent.faisnel at ariase.com
Mon May 19 16:12:47 CEST 2003
Prof Brian Ripley wrote:
>On Mon, 19 May 2003, Laurent Faisnel wrote:
>
>
>
>>I just visited the link you gave me. One of the problems that could
>>occur using NuSOAP is that I do not intend using Python. Thanks anyway.
>>I would also like to ask more precise questions :
>>
>>
>
>`more precise'? At least some of the inefficiencies are emerging, but I
>still have little picture of what you are actually trying to do. It ought
>to be possible to run a new R session in a well under a second (on a 1+GHz
>machine):
>
>gannet% time env R_DEFAULT_PACKAGES=NULL R --vanilla --slave < /dev/null
>0.203u 0.039s 0:00.27 85.1% 0+0k 0+0io 1220pf+0w
>
I don't understand how you made this test. What does "gannet%" mean?
Anyway, when I launch R with these options (--vanilla and --slave), it
is fast enough.
>
>for example (on a dual Athlon 2600, R 1.7.0).
>
>
>
>>- is it possible to run R as a standalone service, which runs in
>>background indefinitely, waiting for instructions ?
>>
>>
>
>It is, but waiting for instructions from one place (stdin or on a socket).
>
This is a good piece of news. But how ?
>There is some danger of different jobs sent leaving things behind that
>will cause interactions.
>
I 'll make some tests about possible interactions if I successfully
launch R in such a mode.
>>This would be a
>>great improvement for me, since each time it is launched R has to
>>re-load a (constant) matrix generated thanks to a database connection
>>(takes a very long while)
>>
>>
>
>You could just save and then load that matrix in your .RData
>
>
Seems to be a good idea. I'm not used to edit my .RData but sure it
would be an improvement. I had not even thought about it.
>>- my R script is object-oriented; I define classes and methods, but I'm
>>not so sure about how methods should be declared; I usually write
>>something like :
>>
>>mymethod <- function(.Object) UseMethod("mymethod",.Object);
>>
>>setMethod("mymethod","myclass",
>> function(.Object)
>> {
>> # instructions
>> return(.Object);
>> }
>> );
>>
>>Perhaps is this not the best way to write methods ? Could this explain
>>the following fact : when I run the script, R spends about 1/3 of its
>>thinking time creating the generic functions linked with my methods.
>>Isn't this wasted time ? The same script may be executed many times
>>consecutively by different users, and each time R has to re-define the
>>generic functions ! (are always the same)
>>
>>
>
>Yes, but it is your usage that is the problem. You are mixing S3 and S4
>methods (where did you copy an example like that from?). You should
>dump your scripts if you use S4 methods (which I don't think you should be
>doing in such simple examples, nor if you care about speed): see the
>examples of S4-using packages on CRAN (e.g. DBI, SparseM).
>
>
I clearly prefer using S3 classes & methods. I knew S4 classes would
cause slowness problems. But I did not find a clear documentation about
differences between S3 and S4. Neither did I find detailed tutorials
about R programming. Which part of my code structure is S3-like and
which one is S4-like ? Is the above-mentionned problem S4 classes' fault
? You mean with clean S3 scripts I would have none of these drawbacks ?
>Also consider upgrading to R 1.7.0 and setting R_DEFAULT_PACKAGES to what
>you actually need (and omit methods if you don't need it)
>
>
>
I won't use R 1.7.0 for the time. First everything has to work fine with
R 1.6.2. I think I have few things in R_DEFAULT_PACKAGES, and I cannot
omit methods because I use them all !
Thank you for your answer.
Laurent
More information about the R-help
mailing list