incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Sebor <se...@roguewave.com>
Subject Re: implementation of Unary Traits
Date Tue, 08 Jul 2008 04:02:17 GMT
Travis Vitek wrote:
>  
[...]
> Here is one alternative that we might want to consider. Instead of
> stripping cv qualifiers, we add them and then provide a specialization
> for the cv-qualified type.
> 
>   template <class T>
>   struct is_cv_void { typedef false_type type; };
> 
>   template <> struct
>   struct is_cv_void<const volatile void> { typedef true_type type; };
> 
>   template <class T>
>   is_void: is_cv_void<const volatile T> { };
> 
> It is a bit of a compromise between the two implementations shown above.
> This has the advantage over the "alternative approach" that it reduces
> the number of templates to parse. It also eliminates the need to
> instantiate remove_cv that is used in the template metaprogramming case.

Interesting idea!

> 
> Martin, if you still have your performance numbers, could you compare
> this to the previously proposed options?

The test script I've been using most recently is here:
   http://people.apache.org/~sebor/templatetest

This script is slightly different than the test case I used to
produce the original numbers. The original test also used the
-A option with EDG eccp, while this one doesn't.

Running it like this
     $ ~/tmp/templatetest -c "eccp gcc" -i 20 -t 1000

produces these results (I modified the output to show only
user times in a M:SS format in an easy-to-read table):

     generating 20 instantiations of 1000 distinct types...
                             ECCP    GCC
                              3.9  4.3.0
     with add_cv             0:28   0:22   # using is_cv_void
     without remove_const    0:24   0:19
     with remove_const       0:49   0:18
     with inline expansion   0:39   0:18

Btw., the EDG eccp times are without the -A strict conformance
option that we use; the times with the option are usually much
longer (I'd have to modify my script to pass arguments to it
to get those results).

Martin

Mime
View raw message