23 May 00:21
Re: [math] pow redux and observations
Bruno Lalande <bruno.lalande <at> gmail.com>
2008-05-22 22:21:25 GMT
2008-05-22 22:21:25 GMT
> I have to react to this. There is something called aliasing that prevent compilers to optimize, and passing builtins by const ref is generally NOT a good idea performance wise. > > There is something called the const-forwarding type that resolves to value for built-ins and const refs for UDT that might be useful here. Usually to solve this problem I simply use call_traits::param_type, is there any objection to this? > Finally, something that no one seems to be concerned about in this thread, is the cost of all these templates in terms of byte object code. In such a low-level header, you can expect all these templates to end up in every UoR in your libraries, linked together into an executable. Keeping positive_ and negative_ out of your template names is going to save that many bytes in your object. You may think its nothing. I've seen placeholders (_1 to _10) defined as static const Placeholder<N> take up to .5M for essentially nothing (it's an empty class!) We saved that .5MB by declaring them extern, as is done in Boost. So the rule is: keep it as simple and short as possible while remaining readable code. OK I'll take a closer look at how the executable size changes with the different implementations, indeed it's a point I've forgotten a bit... Bruno _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
RSS Feed