Boost logo

Boost Users :

From: Hicham Mouline (hicham_at_[hidden])
Date: 2008-07-04 07:36:26

The solution to this one is provided by Joaquin, in his reply below:

I tried compiling your code with MSVC++ 8.0 and it is indeed incredibly slow. After playing a little with the code I realized that MPL views are the culprit here: for some reason it is much faster to fold on a vector-based computation rather than a view:

  template<typename Sequence1,typename Sequence2>
  struct sequence_product :

This transformation on sequence_product and seq_seqpair_product alone improved the performance tremendously. Additionally I've tried a small optimization: in seq_seqpair_product it is preumable better to fold on Sequence rather than SequencePair, since on average the first is expected to be shorter. Truth be said, I haven't detected any improvement with this, anyway.

> Shouldn't there be a dot-product or cross-product of mpl sequences as
> a general algorithm? and not just 2 sequences but N.

I guess it is the O(n^2) behavior that deterred the author from including the algorithm (much as STL usually does not contain quadratic algorithms).
It might be a worthy addition, nonetheless



Interesting why a joint_view slower than the alternative.
This result confirmed then on MSVC8 , gcc4.1, Intel10...


Boost-users list run by williamkempf at, kalb at, bjorn.karlsson at, gregod at, wekempf at