Boost logo

Boost Users :

From: jhr.walter_at_[hidden]
Date: 2003-06-11 16:48:11


Hi Alexis,

you wrote:

> I am trying to use the boost::ublas library in my code to speed up
> things, but I was a bit suspicious about the results.

You've read the documentation's remarks about abstraction penalty, haven't
you?

> So I ran my own
> tests, and I found that ublas is not as fast as the C implementation,
> but is actually about twice slower (for my test, which are very
> limited). Please find the source file below.
> I am not very familiar with expression template. Am I doing something
> wrong?

No (as far as I see).

> Are the results specific to this test?

In a certain sense.

[snip parts of code]

> typedef int value_type;

Interesting data type ;-)

> #define N 14
> #define K 100000000

[snip other parts of code]

I've been playing with these parameters and two compilers. For GCC 3.2.1
(compiler options -NDEBUG -O3) I see the following results on my box:

n = 14, k = 100000000

c t=4.5
assign prod t=6.58

n = 14*14, k = 10000000

c t=5.59
assign prod t=7.76

n = 14*14*14, k = 1000000

c t=8.89
assign prod t=12.59

n = 14*14*14*14, k = 100000

c t=70.88
assign prod t=70.11

For ICC 7.1 (again compiler options -NDEBUG -O3):

n = 14, k = 100000000

c t=3.16
assign prod t=6.22

n = 14*14, k = 10000000

c t=4.49
assign prod t=6.05

n = 14*14*14, k = 1000000

c t=6.91
assign prod t=10.19

n = 14*14*14*14, k = 100000

c t=70.37
assign prod t=70.78

It looks like the inner loops of the 'C' and C++ code are identical. I'm
unsure if the abstraction penalty for small sizes can be eliminated by the
compiler writers or if it justifies a 'tiny vector/matrix' abstraction a la
Blitz++ (resulting in a corresponding compile time abstraction penalty ;-)

Best,

Joerg


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