[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Fast matrix filling in IDL

A slight modification of David's program, and adding
my favourite speedup method:

  m = 1000
  n = 500
  array = Fltarr(m, n)
  v = RandomU(seed, m)
  time = systime(1)
  FOR i=0,n-1 DO array[*,i] = v
  Print, 'Time for Loop: ', systime(1) - time
  time = systime(1)
  vector = Replicate(1, n)
  array = v ## vector
  Print, 'Time for Matrix Operations: ', systime(1) - time
  time = systime(1)
  array = rebin(reform(v,m,1,/overwrite),m,n,/sample)
  print, 'Time for Rebin Operations: ', systime(1) - time

On { alpha OSF unix 5.2 Oct 30 1998}, this gives:

Time for Loop:                   0.27343702
Time for Matrix Operations:      0.093750000
Time for Rebin Operations:       0.067382932

Note that the relative speeds can vary quite a lot on 
different architectures.


Stein Vidar