
"Tobias Schwinger" <tschwinger@neoscientists.org> wrote
Arkadiy Vertleyb wrote:
OK, but this means we have to change the syntax of REGISTER macros to do something like:
#include BOOST_TYPEOF_REGISTER_...(...)
I remember you suggested this during the review. I am still not quite comfortable with the idea...
No it's a different pair of shoes I'm talking about here (in fact, having used the library some more I found several situations that require REGISTER_* to be macros, so you can safely forget about my review suggestion).
What I'm talking about here is purely an implementation issue and doesn't affect the interface at all (typeof/vector.hpp). I'll attach a patch that highlights the changes needed to make things work for 118 <= LIMIT_SIZE <= 238.
Of course, I already realized that I was saying some nonsence :-(
Here's my modifications: ^^^^^ BTW excuse my beautiful english... ;-)
How much faster is it?
Hard to say in general. It depends on the case:
bjam run in ${BOOST}/libs/typeof/test ============================================= without preprocessed files: about 2.5 minutes with preprocessed files: about 1.5 minutes original version: about 2.5 minutes *
* slightly slower than the 1st
Now to the cases that hurt:
Test with LIMIT_SIZE = 117 ========================== without preprocessed files: 45 seconds with preprocessed files: 13 seconds original version: 52 seconds
Test with LIMIT_SIZE = 238 ========================== without preprocessed files: about 5.5 minutes with preprocessed files: about 0.5 minutes original version: <limit exceeded>
Test with LIMIT_SIZE = 250 ========================== without preprocessed files: <limit exceeded> with preprocessed files: about 0.5 minutes original version: <limit exceeded>
Very good.
More benchmarks needed?
No. Can you commit this? Just put a comment into vector.hpp about what needs to be done when it changes (how to generate the preprocessed files), and add your copyright to vector.hpp and generated files. If you have some tests, can you add them, too? Regards, Arkadiy