At 10:57 PM 11/1/2007, Charles R Harris wrote: > > An additional complication is that I pass the numpy (or Numeric) > > array address to the ctypes library call so that the data is placed > > directly into the array from the call. I use the if/else end wrap > > logic to determine whether I need to do a split and copy if the new > > data wraps. > >OK. Hmm, I wonder if you would lose much by taking a straight forward >radix-2 fft and teaching it to use modular indices? Probably not worth the >trouble, but an fft tailored to a ring buffer might be useful for other >things.
The problem is, I once compiled my own FFT dll to call from Python and it was 2x slower than FFTPACK - I'm not math-smart enough to make all of the caching and numerical shortcuts. That, and Intel's optimized FFT is 3x faster than FFTPACK... I may still try to do a "zoom/range FFT" which does not compute all bins, and maybe only with a sine transform, which (I think) should be sufficient to determine peak real frequency and maybe use fewer cycles. >Probably the easiest thing is to just copy the ring buffer out into >a linear array. I do that for the buffer-wrap condition, while simply assigning a slice (no copy) to the temp array otherwise. > > I used Numeric functions for the ~40% speed increase, but I don't > >I know that numarray was slow in creating small arrays, but is Numpy >really that bad compared to Numeric? I just saw the # of FFTs/sec go from 390 to 550 just by switching numpy to Numeric (Intel Core Duo). Add a timer to my previous code posts and see how your results look. For the mega-arrays a lot of the numpy developers work with it is much faster, and I now find Numeric is lacking many other niceties, like frombuffer(). Ray -- No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.5.503 / Virus Database: 269.15.18/1104 - Release Date: 11/1/2007 6:47 PM _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion