Boost logo

Boost Users :

From: John Maddock (john_at_[hidden])
Date: 2007-11-27 11:52:28


Bryan Green wrote:
> Hello,
> I've discovered a situation where using boost::array results in a
> 2-fold performance degradation over other array types, including C
> arrays, tr1::array, and a simple handwritten array class.
> While the tr1::array performs well, I was suprised to find that it
> pads the array, so sizeof(tr1::array<3,float>) ==
> sizeof(tr1::array<4,float>). Is that a requirement of tr1::array?

No, that will be an effect of the compiler's structure alignment rules.

BTW tr1::array and boost::array are basically the same thing, so I'm
surprised that there's any difference at all.

> Anyway, the performance problem can be seen using Intel C++ (v9.1) on
> the Itanium platform, using '-O3' optimization.
>
> I'm forced to take boost::array out of my computation's inner loop.
> Is this a previously known issue? Any ideas why this performance
> discrepancy might exist?

Can you share a test case?

As others have already noted, defining NDEBUG is likely to have quite an
effect as well.

HTH, John.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net