On Mon, Feb 29, 2016 at 1:52 PM, Bruno Dutra
[snip]
2016-02-29 6:37 GMT-03:00, Jens Weller
: [snip] Do you compile as fast as Brigand?
My next efforts will be directed toward developing a framework for running benchmarks. I'll be sure to add Brigand, as well as other alternatives of which I am aware, for comparison purposes.
At last, after almost 9 months, I think it is time I properly address this question. It is unfortunate that it took so long, but up until recently the compile time performance of metaprogramming libraries simply couldn't be assessed due to the lack of proper tooling and arguing on this matter would have been in vain. As some of you may know from some of his talks, Louis Dionne and I decided to team up and develop a comprehensive yet simple set of tools that would make it easy to benchmark metaprogramming techniques and as such provide feedback to the development of faster metaprogramming libraries. This is how Metabench came to be, in very few words a drop in CMake module that provides a concise API to generate charts out of compile time benchmarks. Using Metabench we then set up a comprehensive collection of compile time benchmarks to assess the performance of well known metaprogramming libraries (currently Boost.MPL, Boost.Fusion, Boost.Hana, Metal, Meta and Brigand), whose up to date results for several versions of GCC and Clang are published daily at Metaben.ch [1]. Now, finally, back to the question: Yes, Metal compiles just as fast as Brigand on both Clang and GCC and even considerably faster for some algorithms [1]. I should also mention that meanwhile I have completely overhauled Metal a few too many times already to make sure I explored all the possibilities modern C++ offers TMP and even though it's still subject to some minor refactoring, I'm confident that its current API is close to what will eventually make it to a stable release. In fact I've already written most of the reference documentation as I don't expect it to change significantly anymore and as such I'd like to invite all of those interested in metaprogramming to take a look at it [2]. Any feedback will be greatly appreciated. [1]: http://metaben.ch/ [2]: http://brunocodutra.github.io/metal/ Regards, Bruno