On 4/16/05, GiusVa <sigakernel at yahoo.com>
wrote:> Dear members,
>
> The code I am writing heavily use element-wise multiplication of
> matrix and vectors, e.g.
>
> X, is nxm matrix
> e, is nx1 matrix
>
> Doing Z=X*e[,], I obtain a nxm matrix, Z, where each column of X is
> multiplied (element-wise) by e. Is this the best way to achieve the
> result I want? By best way, I mean the fastest way. By profiling my
> code, 45% of the time is spent by "*" and even a 30% speedup in
> obtaining Z would greatly benefit the total speed of the code.
>
> Aby suggestion is greatly appreciated.
>
> |Giuseppe Ragusa
> |University of California, San Diego
Try this:
> mm <- matrix(1, 1000, 1000)
> ee <- matrix(1:100,nc=1)
> system.time(mm*ee[,], TRUE)
[1] 0.26 0.02 0.28 NA NA
> system.time(mm*c(ee), TRUE)
[1] 0.07 0.00 0.07 NA NA
> # if you have to do it multiple times with same ee:
> cee <- c(ee)
> system.time(mm*cee, TRUE)
[1] 0.06 0.00 0.06 NA NA