Anyway I think it was just a toy example.

Any additionnal information is welcome.

Best,
Jean

2009/11/22 Peter Ehlers <ehl...@ucalgary.ca>

>
>
> Stefan Evert wrote:
>
>> Sure, badly written R code does not perform as well as well written python
>>> code or C code. On the other hand badly written python code does not perform
>>> as well as well written R code.
>>>
>>> What happens when you try one of these :
>>>
>>> sum <- sum( 1:N )
>>>
>>
>> R runs out of memory and crashes. :-)  I didn't tell you how big N is, did
>> I?
>>
>
> Really?
>
>  N <- 1e30
>  sum( 1:N )
>  Error in 1:N : result would be too long a vector
>
>  -Peter Ehlers
>
>
> >
>
>>
>> But this is exactly the point I was trying to make (but perhaps not
>> prominently enough).  In many cases, you can vectorize at least parts of
>> your code or find a more efficient algorithm, which may be faster in R than
>> a brute-force solution in C.  But sometimes, you just cannot avoid loops
>> (let's not forget that all the forms of apply() are just loops and don't
>> give much of a speed benefit over a for-loop), function calls, etc.; in this
>> case, performance differences between interpreted languages can matter.
>>
>> Personally, I'd never switch from R to Perl just for speed, though.
>>
>> BTW, I also tried a vectorised algorithm in R, which calculates the sum
>> above in a small number of chunks:
>>
>> N1 <- 50
>>> N2 <- 1000000
>>> N <- N1 * N2
>>> sum <- 0
>>>
>>> for (i in 1:N1) {
>>>        x <- as.numeric(i-1) * N2 + 1:N2
>>>        sum <- sum + sum(x)
>>> }
>>>
>>
>> which gives
>>
>> R/simple_count_vec.R              31.30 Mops/s  (50000000 ops in 1.60 s)
>>
>> So an interpreted loop in Lua is still faster than this partially
>> vectorized code in R:
>>
>>  lua/simple_count.lua 65.78 Mops/s (100000000 ops in 1.52 s)
>>>>
>>>
>> As people on the SQLite mailing list always say: there's no general answer
>> as to which language/implementation/query/... is faster and better.  You
>> just have to test the different options for your specific application
>> setting, and be prepared for one or two surprises.
>>
>> Just in case this isn't obvious: If I rewrote matrix multiplication in C
>> and linked this code into R, it would run much slower than if I just typed
>> "A %*% B".
>>
>> All the best,
>> Stefan
>>
>> ______________________________________________
>> R-help@r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
>> and provide commented, minimal, self-contained, reproducible code.
>>
>>
>>
> ______________________________________________
> R-help@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
> http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.
>

        [[alternative HTML version deleted]]

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to