Re: Vectorization
- To: mathgroup at smc.vnet.net
- Subject: [mg60668] Re: Vectorization
- From: Peter Pein <petsie at dordos.net>
- Date: Fri, 23 Sep 2005 04:20:24 -0400 (EDT)
- References: <dgtjh4$2bk$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Marcelo Mayall schrieb: > It's possible to initialize a vector starting from an elementary functions: > > In[1]:= > Table[Sin[Random[]],{10000000}]//Timing//First > > Out[1]= > 3.203 Second > > The same problem can be done a bit more efficiently if the elementary function is applied to the numerical vector: > > In[2]:= > Sin[Table[Random[],{10000000}]]//Timing//First > > Out[2]= > 1.969 Second > > But why the tendency is opposed when the numbers are complex ? Is this a bug ? > > In[3]:= > Table[Sin[I Random[]],{1000000}]//Timing//First > Sin[Table[I Random[],{1000000}]]//Timing//First > > Out[3]= > 2.484 Second > > Out[4]= > 2.656 Second > > > Thanks, > > Marcelo Mayall > Hi Marcelo, I guess in Sin[Table[I Random[],{10^6}]] the kernel has to decide a million times to calculate I*Sinh[Im[I*random number]] vs. once in Table[Sin[I Random[]],{10^6}]? In[1]:= SeedRandom[1]; First[Timing[Table[I*Sinh[Random[]], {10^6}]]] MaxMemoryUsed[]/1024.^2 Out[1]= 1.734*Second Out[2]= 56.998374938964844 <new kernel start> In[1]:= SeedRandom[1]; First[Timing[I*Sinh[Table[Random[], {10^6}]]]] MaxMemoryUsed[]/1024.^2 Out[1]= 1.078*Second Out[2]= 110.40516662597656 to compare the timings, here are the results of the four operations from your posting: 3.125*Second / ~ 79 MB 2.609*Second / ~ 155 MB 2.094*Second / ~ 57 MB 2.266*Second / ~ 129 MB Obviously, the calculation of the sines of lists doesn't happen in-place (and it must not in general). Peter -- Peter Pein, Berlin GnuPG Key ID: 0xA34C5A82 http://people.freenet.de/Peter_Berlin/