[R] help:too slow
detlef.steuer@unibw-hamburg.de
detlef.steuer at unibw-hamburg.de
Tue Mar 20 10:26:05 CET 2001
Hi!
Using your original function on some dummy data I get:
(700MHz PIII Linux 2.2.18)
w <- as.matrix(floor(runif(100000,100,999)))
unix.time(m <- time(col2mat(w)))
[1] 22.67 0.69 50.48 0.00 0.00
50 seconds to generate the whole matrix.
If I comment out the print(s) it reduces to:
unix.time(m <- time(col2mat(w)))
[1] 21.03 0.64 21.86 0.00 0.00
But if I change the function definition to
"col2mat" <-
function(x, sampsz=220, qsamp=2000) {
m<-matrix(nr=qsamp, nc=sampsz)
for(s in 1:qsamp){
### print(s)
### for(i in 1:sampsz){
m[s,(1:sampsz)] <- x[s+(1:sampsz),1]
### }
}
m
}
which I consider functional equivalent I can go down to:
> unix.time(m <- time(col2mat(w)))
[1] 0.52 0.06 0.59 0.00 0.00
Probably you can get rid of the outer loop in a similar fashion.
Hope that helps,
detlef
On 20-Mar-01 Valery A.Khamenya wrote:
> here is a script I use to make overlapping cut of my input "col.dat"
> file into a matrix:
>
>#----------------------------------
> col2mat<-function(x, sampsz=220, qsamp=2000) {
> m<-matrix(nr=qsamp, nc=sampsz)
> for(s in 1:qsamp){
> print(s)
> for(i in 1:sampsz){
> m[s,i] <- x[s+i,1]
> }
> }
> m
> }
> w<-read.table("col.dat", check.names=FALSE)
> m<-col2mat(w)
>#----------------------------------
>
> the input file "col.dat" looks like this:
>#-----------------------
> 118
> 118
> 122
> .
> .
> .
> -90
> -84
> -120
> -108
>#------------
> contains about 380000 numbers and has a size of 1.5Mb. Not a small
> file I understand, but not too large! However I do not use the whole
> file at _this_ stage of my task, I use no more than 10% (no more than
> 150Kb) if it is matter. Well.
>
> Problem: m<-col2mat(w) works toooo slow. One row (that is 220 numbers)
> of such a matrix is being formed in ~5 sec! (5*2000 = 10000 sec). it
> is slowed in thousands times comparing to analogical C-code, too much
> I think.
>
> Q1: is there a better way to create my matrix? (maybe I do some
> mistake)
>
> Q2(for developers): if this slowdown is a problem of R's engine, may
> we hope the problem will be corrected?
>
> thank you.
>
> Valery A.Khamenya (please reply-to:<news_vkhamenya at chat.ru>)
>
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.
> -
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._.
> _
Detlef Steuer ** Universität der Bw ** 22043 Hamburg
Tel: (0049) (0)40/6541-2819
steuer at unibw-hamburg.de
There is more to life than increasing its speed. - Mahatma Gandhi
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list