discuss-gnuradio
[Top][All Lists]
Advanced

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

Re: [Discuss-gnuradio] Avoid double memory initilization in PMT unified


From: Eric Blossom
Subject: Re: [Discuss-gnuradio] Avoid double memory initilization in PMT unified vectors
Date: Tue, 7 Oct 2008 12:23:28 -0700
User-agent: Mutt/1.5.18 (2008-05-17)

On Tue, Oct 07, 2008 at 07:26:08PM +0200, Stefan Brüns wrote:
> Hi,
> 
> in PMT, there is code like:
> 
> pmt_u8vector::pmt_u8vector(size_t k, uint8_t fill)
>   : d_v(k)
> {
>   for (size_t i = 0; i < k; i++)
>     d_v[i] = fill;
> }
> 
> As std::vector initializes the memory by itself when called with an size 
> argument in the constructor, the memory is initialized twice.
> 
> A faster version with the same result is:
> 
> pmt_u8vector::pmt_u8vector(size_t k, uint8_t fill)
>   : d_v(k, fill)
> {}

Thanks.  I'll fix.


> Same is true for the other data types.
> 
> Another question:
> Why are the classes for the different types written "by hand", and not using 
> templates, eg:
> 
> template <typename T>
> class pmt_uniform_vector
> {
>   ...
> }
> typedef pmt_uniform_vector< uint8_t > pmt_u8vector;
> 
> Stefan

My goal was to keep the interface completely opaque.  It's likely that
the underlying implementation will be completely rewritten at some
point.  Although we're currently using a C++ style implementation,
it's quite possible that we'll move to a more lisp-style
implementation with type info stored in the low pointer bits, GC
instead of reference counting, etc.

Using templates in the .cc files to reduce replicated code would be a
good idea with the current implementation.

Eric




reply via email to

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