Re: [Boost-users] extraction invariants from intensive-loop based on template parameters
----- Original Message ----- From: "Matthieu Brucher"
To: boost-users@lists.boost.org Subject: Re: [Boost-users] extraction invariants from intensive-loop based on template parameters Date: Thu, 19 Feb 2009 14:17:20 +0100 Hi,
The compiler is smart enough to prune an if condition if it knows that the value is always false. So if you add an if(!Lower::IsConstant) before and after your loop, you don't have to rewrite it.
Matthieu
2009/2/19 Hicham Mouline
: Hello,
I have an algorithm like:
template
class X { static void f() { .... for (size_t n=0; n<=N; ++n) { // process for j=0 at every n if Lower::IsConstant is false for (size_t j=1; j<=J-1; ++j) { } // process for j=J at every n if Upper::IsConstant is false } .... }
So I extracted the double for loop in a separate wrapper class and I verbosely wrote 4 specializations with template args begin bool :
for e.g. for
// process for j=0 once for (size_t n=0; n<=N; ++n) { for (size_t j=1; j<=J-1; ++j) { } } // process for j=J once
Any advice? Is there a better way than writing explicitly the tmpl specializations? Boost.PP maybe?
rds, _______________________________________________
I've just measured with VS2005, g++4.0 and intel11. At least these 3 compilers are smart enough. Thanks,
participants (1)
-
Hicham Mouline