【问题标题】:Benchmarking compile-time properties of a program对程序的编译时属性进行基准测试
【发布时间】:2016-03-19 15:13:39
【问题描述】:

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

我目前所做的是对一个值进行二等分。但对于现实世界的模板加载程序,它的运算时间会变得很长,甚至是一个值的上限的对数。

-v 选项和-ftime-report,但即使是它们的输出也没有提供关于实际使用的最大模板深度和在评估常量表达式期间实际通过的步数的任何所需信息。

【问题讨论】:

    标签: c++ templates gcc clang constexpr


    【解决方案1】:

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

    通过二分法找到-ftemplate-depth-fconstexpr-steps 的必要值当然手动操作有点麻烦,但您也可以编写一个脚本(Ruby、Python 等任何您喜欢的东西)来自动执行此操作。只需在简单的while 循环中将初始值加倍,直到程序编译成功。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-19
      • 1970-01-01
      • 2017-02-28
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      相关资源
      最近更新 更多