[Top][All Lists]

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

Re: [Discuss-gnuradio] ANCI-C vs Gnuradio/C++ speeeed

From: Ilia Mirkin
Subject: Re: [Discuss-gnuradio] ANCI-C vs Gnuradio/C++ speeeed
Date: Fri, 12 May 2006 18:24:38 -0400
User-agent: Internet Messaging Program (IMP) H3 (4.0.3)

Quoting Achilleas Anastasopoulos <address@hidden>:

you can find the relevant code here:


looking forward to your comments.

Have you tried profiling the code? This would allow you to definitively
determine what the culprits are.

From a quick glance you aren't doing anything *blatantly* wrong (i.e. you're
passing vectors around by cref, which is good). However, from a performance
perspective, vector<> isn't really what you want to use in this case. You're
just dealing with basic types, e.g. float/int/etc -- they don't have weird
constructors/destructors, and thus have to do a lot more work.

Also, when you do

vector<int> x;
x[0] = 5;

keep in mind that internally it instantiates a new int object, and then calls
operator= on it. The compiler might optimize this to a certain extent, but
certainly not to the level of simplicity of a single memory access/write. Note
that the gnuradio interface for, e.g. (general_)work uses these primitive
pointers (i.e. a vector<> of simple arrays). There doesn't really seem to be a
good reason for you to be using vector<> in your code... (Do correct me if I'm


Ilia Mirkin wrote:
Would you care to share your C++ implementation (e.g. post a link) so that it
might be critiqued rather than say things like "C++ is slower than C"?


Quoting Achilleas Anastasopoulos <address@hidden>:

I have some new data on this.

Going from ANSI-C to C++ (NO Gnuradio) using
STL vectors results in a 5-fold speed reduction!

So Gnuradio seems to be responsible for the remaining
4-fold reduction (for an overall 20-fold as I reported earlier).

I am OK with Gnuradio resulting in this 4-fold speed reduction,
but I cannot swallow the fact that STL sucks that bad :-(  !!!

I believe that this is not specific to my application, but should be true for any algorithm that uses vectors/matrices.
I wonder if anyone can corroborate this.


Robert W McGwier wrote:

Yes. I was comparing Phil Karn's native code to it and it runs at least 20 times faster.


Achilleas Anastasopoulos wrote:

I have noticed a huge speed dissadvantage when comparing my
ANSI-C implementation of a Viterbi decoder with my Gnuradio implementation. The core code is pretty much the same, except
that in the Gnuradio implementation I am using STL vectors.

It seems that Gnuradio is about 20 times SLOWER than ANSI-C!!!
I was wondering if this has to do with Gnuradio itself (buffering +
python + other fat), or with the fact that I had to translate all
my ANCI-C code to C++ and use STL.

Does anyone have similar experiences?


Discuss-gnuradio mailing list

Achilleas Anastasopoulos
Associate Professor
EECS Department               Voice : (734)615-4024
UNIVERSITY OF MICHIGAN        Fax   : (734)763-8041
Ann Arbor, MI 48109-2122      E-mail: address@hidden
URL: http://www-personal.engin.umich.edu/~anastas/

reply via email to

[Prev in Thread] Current Thread [Next in Thread]