Hi Maxime

nice work. Yes I would expect the FFT twiddle factors to be pre calculated.

I expect a fair bit of work would be required to use the CMSIS functions.

I use them extensively in my DSP and audio processing work, and the filter primitives are nice and fast.
They are certainly worthwhile using.

David is probably right- alot of the codec2 code is just general C code.

I bet though some work and performance would improve (to suit the STM32), there are always improvements on the edges.

.. or use a bigger processor...

cheers
glen




On 17/06/2016 9:20 PM, Maxime Guyon wrote:
Hello,

Some news:

I've compiled the CMSIS library for my target.
I've evaluated the performance of "sinf", "cosf" functions and their equivalent "arm_cos_f32" and "arm_sin_f32":

CMSIS functions are 15% more faster than the classic one.

I've replaced all call to "sinf" and "cosf" by "arm_cos_f32" and "arm_sin_f32" in codec2.
No remarkable difference, it's due to the fact that it seem kissFFT precalculate table for cosinus and sinus function at creation or codec.

I've found the test you did with CMSIS for FFT in STM32  directory "fft_test.c".
I'll try to get it working for my target and return back my profile result.

Regards

2016-06-17 10:04 GMT+02:00 Maxime Guyon <[email protected]>:
Hello,

@Steve: Thank you for the hint to define NDEBUG, I tested it but timing remain approximately the same.

@glen english: Thank you for your hint about CMSIS, I will try to compile CMSIS for my platform but seem to be not straightforward since I've never used it before. 

@David Rowe: I saw some other post where you effectively say that you have already tested CMSIS FFT without speed improving...
-Do you already have the piece of code for replace kissfft with CMSIS function?
-Can you provide some clue to test it and some step to replace kissfft?
-I saw a post but cannot find it now where you say that there is a file for test FFT, maybe it's the good starting point for test CMSIS speed improvement.

Regards,

Max

2016-06-17 2:34 GMT+02:00 Steve <[email protected]>:
Just a wild guess, but maybe define NDEBUG (-DNDEBUG) in the make call which will get rid of all the assert() check macro's. Making it a release rather than a debug version.

Maybe save a few ms. I think the FFT is the real cruncher though.


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://sdm.link/zohomanageengine
_______________________________________________
Freetel-codec2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freetel-codec2





------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://sdm.link/zohomanageengine


_______________________________________________
Freetel-codec2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freetel-codec2




------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity planning
reports. http://sdm.link/zohomanageengine
_______________________________________________
Freetel-codec2 mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freetel-codec2

Reply via email to