[R] R Production Performance
Zitan Broth
zitan at mediasculpt.net
Thu Sep 25 23:07:17 CEST 2003
Hi Paul,
Thanks greatly for your message.
----- Original Message -----
> Below is the test I ran awhile back on invoking R as a system call. It
> might be faster if you had a c-extension to R but before I went that route
I
> would want to know 1) roughly how fast Python and Perl are in returning
> results with their c-bindings/embedded stuff/dcom stuff, 2) whether R can
be
> run as a daemon process so you don't incur start up costs, and 3) whether
R
> can act as a math server in the sense that it will fork children or
threads
> as multiple users establish sessions with it. I agree it would be nice to
> have a better interface to R than via a system call.
Yeah I agree with what you are saying here for sure. I would like to run R
as a daemon and perhaps 'process manage' it to ensure that only one request
is passed at a time. If you are incur even a couple fo seconds from using
file IO then for the enterprise a different approach needs to be taken.
Perhaps using swig or directly from a database.
Awesome,
Z.
> Regards,
> Paul Meagher
>
> =====================
>
> I just timed how long it took to pipe a file containing 2 lines below into
R
> (via a PHP script executed from my browser):
>
> input.R
> --------------
> x = cbind(4,5,3,2,3,4)
> x
>
>
> <?php
> // timer.php
>
> function getmicrotime(){
> list($usec, $sec) = explode(" ",microtime());
> return ((float)$usec + (float)$sec);
> }
>
> $time_start = getmicrotime();
>
> $Input = "./input.R";
> $Output = "./output.R";
> $RPath = "/usr/local/bin/R";
> system("$RPath --no-save < $Input > $Output");
> $fp = fopen("$Output", "r");
> while (!feof($fp)) {
> $line = fgets($fp,4096);
> echo $line ."<br>";
> }
> fclose($fp);
>
> $time_end = getmicrotime();
> $time = $time_end - $time_start;
> echo "<p>Time To Execute: $time seconds</p>";
> ?>
>
> The time to execute this script was 3.1081320047379 seconds (if I execute
> the script a few times this around what I get).
>
> I then removed the line that calls R only. There was something in the
> output.R file so, in essense, the only difference between the original
> script and modified script is the removal of the system call to R.
>
> The time to execute was 0.0010089874267578 seconds
>
> By subtractive logic, this means the call to R incurs an overhead of
around
> 3 seconds on a average web server box using the php-apache module.
>
> ============================================
>
>
>
>
>
>
> ----- Original Message -----
> From: "Zitan Broth" <zitan at mediasculpt.net>
> To: <james.holtman at convergys.com>
> Cc: <r-help at stat.math.ethz.ch>
> Sent: Wednesday, September 24, 2003 2:46 PM
> Subject: Re: [R] R Production Performance
>
>
> > Hi James,
> >
> > Thanks for your response :-)
> >
> > ----- Original Message -----
> > > It is like anything else that you want to run as part of web services:
> > what
> > > do you want it to do? Yes, it is fast in doing computations, but what
> > will
> > > you have it do? It is probably as fast as anything else that you will
> > find
> > > out there that is fairly general purpose.
> >
> > I just want to use R for mathematical computations, and will call it via
> PHP
> > from the commandline with infile. We'll need to obviously test this
> > ourselves, but I just thought I'd raise the question :-))
> >
> > > Are you going to be creating a lot of graphics that have to be
displayed
> > > back on the screen? How is the user going to input data (flat files,
> XML,
> > > Excel worksheets, Oracle database, ...)? Will you be invoking a
unique
> > > process each time a user calls, or will you be using a 'daemon' that
> will
> > > communicate with DCOM and such? How many people will be trying to
> access
> > > it once and what is the mix of transactions that they will use?
> >
> > Well for sure the rest of the app needs to scale as well and be fast,
> > failsafe etc..., but I am just asking about R.
> >
> > I was imagining using a unique process call each time I access R, which
is
> > how the apache/php/*nix environment works best (although keeping
processes
> > in memory is achievable as well). My experience to date on integration
> with
> > C packages deploying to *nix is that this works quite effectively
although
> > certain packages require process management that are not multiprocess
(to
> > ensure that R for example only executes one computation at a time), but
> this
> > is no problem. There are ways to call c packages directly with PHP
(swig)
> > and I am investigating this at present.
> >
> > > You can probably get a real good feel by enclosing the operations that
> you
> > > want to do in a "system.time" function to see how long it will take.
> This
> > > really depends on what you are trying to do. I can definitely say
that
> it
> > > is faster than trying to code the algorithm in PERL or another
scripting
> > > language.
> >
> > Makes sense because R is written in C, where PERL and PHP are also
written
> > in C, so R is a "layer deep" so to speak :-)
> >
> > Thanks again,
> > Z.
> >
> > > Greetings All,
> > >
> > > Been playing with R and it is very easy to get going with the UI or
> infile
> > > batch commands :-)
> > >
> > > What I am wondering is how scalable and fast R is for running as part
of
> a
> > > web service. I believe R is written in C which is a great start, but
> what
> > > are peoples general thoughts on this?
> > >
> > > Thanks greatly,
> > > Z.
> > >
> > > [[alternative HTML version deleted]]
> > >
> > > ______________________________________________
> > > R-help at stat.math.ethz.ch mailing list
> > > https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> > >
> > >
> > >
> > >
> > > --
> > > "NOTICE: The information contained in this electronic mail
transmission
> > is
> > > intended by Convergys Corporation for the use of the named individual
or
> > > entity to which it is directed and may contain information that is
> > > privileged or otherwise confidential. If you have received this
> > electronic
> > > mail transmission in error, please delete it from your system without
> > > copying or forwarding it, and notify the sender of the error by reply
> > email
> > > or by telephone (collect), so that the sender's address records can be
> > > corrected."
> > >
> > >
> > >
> >
> > ______________________________________________
> > R-help at stat.math.ethz.ch mailing list
> > https://www.stat.math.ethz.ch/mailman/listinfo/r-help
> >
>
>
More information about the R-help
mailing list