对程序的编译时属性进行基准测试

时间:2015-12-14 07:46:03

标签: c++ templates gcc clang constexpr

评估编译程序所需的-fconstexpr-steps=-ftemplate-depth=参数的确切最小值的最佳方法是什么?

我目前所做的是对价值的二分法。但对于真实的模板加载程序,它变得非常长,甚至在值的上限上是对数。

-v个选项和-ftime-report,但即使它们的输出也没有提供有关实际使用的最大模板深度和评估常量表达式时实际传递的步骤数的所需信息。

1 个答案:

答案 0 :(得分:3)

您可以查看Boost.Hana如何进行基准测试。其基准代码主要以eRuby templates的形式编写。这些模板用于生成C ++文件,然后在收集编译和执行统计信息时进行编译。

找到-ftemplate-depth-fconstexpr-steps的必要值的Bisection当然有点麻烦,但你也可以编写一个脚本(Ruby,Python,无论你的船是什么)自动化这个。只需在简单的while循环中将初始值加倍,直到程序成功编译。