[R] python

Stefan Evert stefan.evert at uos.de
Sat Nov 21 23:32:08 CET 2009


> My hunch is that Python and R run at about the same speed, and both
> use C libraries for speedups (Python primarily via the numpy package).

That's not necessarily true.  There can be enormous differences  
between interpreted languages, and R appears to be a particularly slow  
one (which doesn't usually matter, as well-written code will mostly  
perform matrix operations).

I did run some simple benchmarks with "naive" loops such as this one

> for (x in 1:N) {
>         sum <- sum + x
> }

as well as function calls.  I haven't tested Python yet, but in  
generally it is considered to be roughly on par with Perl.

Here are results for the loop above:

R/simple_count.R                   0.82 Mops/s  (2000000 ops in 2.43 s)
perl/simple_count.perl             8.32 Mops/s  (10000000 ops in 1.20 s)

(where Mops = million operations per second treats one loop iteration  
as a single operation here).  As you can see, Perl is about 10 times  
as fast as R.  The point is, however, that this difference may not be  
worth the effort you spend re-implementing your algorithms in Python  
or Perl and getting the Python/Perl interface for R up and running  
(I've just about given up on RSPerl, since I simply can't get it to  
install on my Mac in the way I need it).

The difference between R and Perl appears much less important if you  
compare it to compiled C code:

C/simple_count.exe               820.86 Mops/s  (500000000 ops in 0.61  
s)

If you really need speed from an interpreted language, you could try  
Lua:

lua/simple_count.lua              65.78 Mops/s  (100000000 ops in 1.52  
s)

(though you're going to lose much of this advantage as soon as you  
include function calls, which have a lot of overhead in every  
interpreted language.


Hope this helps,
Stefan



More information about the R-help mailing list