[Speex-dev] Performance and Optimization

Tom Grandgent tom at grandgent.com
Mon Jun 15 08:16:12 PDT 2009


Why haven't you tried using release build with compiler optimizations?  
It's quite possible that the performance picture could be substantially 
different.  You might end up wasting a lot of time if you do much 
performance analysis or optimization on a debug build.  Debug build 
not only has no optimization - it also has extra checks that may have a 
significant performance impact depending on the code.

If you want to profile with symbols, you know you can compile a release 
build with symbols, right?  The CodeAnalyst documentation describes 
how to do that with Visual Studio.  (I've done it.)

Tom

Greger Burman <greger at mobile-robotics.com> wrote:
> 
> I have a question about the overall performance of Speex and what I can do
> to improve it. I'm running Speex Windows x86, Visual C++ EE compiler. I will
> say right away that I've only compiled debug so far and used no compiler
> optimizations at all.
> I use the uwb-mode, preprocessing, denoising and echo cancellation.
> I've noticed that speex consumes a lot of cpu resources. When I run this on
> a Celeron 2,6GHz I have to disable EC in order to not overload the cpu. Am I
> correct to assume that there are massive floating point calculations
> happening?
> I did a quick profile with CodeAnalyst and identified the most expensive
> functions as (in order):
> CPU Clocks, Function
> 4657, kiss_fft_stride
> 4456, speex_echo_cancellation
> 2494, split_cb_search_shape_sign
> 1490, fir_mem16
> 1419, speex_preprocess_run
> I'm looking for advise on how to boost the performance with as little code
> rewrite as possible. The architecture for release build will be SSE/SSE2
> capable.
> 1) Compiler optimizations: Recommended options?
> 2) SIMD. Is Speex written to take advantage of SIMD architectures? What must
> I do to take advantage of this?
> -- 
> Greger Burman



More information about the Speex-dev mailing list