Boost logo

Boost :

From: Dan W. (danw_at_[hidden])
Date: 2004-01-07 23:51:46

Matthias Schabel wrote:
> Yep. It's slow to compile. I'd love to start a dialogue on
> performance issues as optimizing metaprogramming compile times is about
> as far from my domain of expertise as it gets...

I think a good starting point for reducing compile time, and more
importantly, *code-writing time* would be to shorten those names.

 From your own example code in another post:

template<class Y>
dimensioned_quantity<Y,dimensioned_unit<si_model,quantity_type> >
(dimensioned_quantity<Y,dimensioned_unit<si_model,pressure_ty pe> > P,
dimensioned_quantity<Y,dimensioned_unit<si_model,volume_type> > V,
dimensioned_quantity<Y,dimensioned_unit<si_model,temperature_type> > T)
     return (P*V/(8.314*(_joules/(_kelvin*_mole))*T));


  "dim_qty" do for "dimensional_quantity"?, or
  "dim_u" for "dimensioned_unit"?, or
  "qty_t" for "quantity_type"?

Another question in my mind is what's the reason to have
"pressure_type", or "temperature_type"? Are they actually doing any work?

Another question I have is about the purpose for "si_model" above. Here
in Canada we constantly mix metric and imperial units. If one was
working on software that controls a rover on a distant planet, I can see
a good reason to restrict the units to a closed system; and I wouldn't
mind having the ability to set a compile time constant that effects such
restriction. But if I'm working on a circuit layout CAD application,
most lead-through components are dimensioned in mils (inches/1000),
while most surface-mount components are dimensioned in millimeters.
But most of all, I'd hate to have to type "si_model", "si_model",
"si_model", "si_model", "si_model",... many times a day.

Now, if my suspicions were right, that 'si_model' is not necessary, and
'quantity_type' isn't really doing anything, then, the type that they
parameterize, namely 'dimensional_unit', might be dispensable.

Couldn't the function be written simply as,

template< typename Y >
Y idealGasLaw( pascals<Y> p, litres<Y> v, kelvins<Y> t );


Kelvins should _themselves_ 'know' that they are a temperature type.
And if I threw Celsius at it, it should know what to do, too.

Just my dim_u<no_model,money_type> two_cents = 0.02 * $; :)

Boost list run by bdawes at, gregod at, cpdaniel at, john at