在 boost-path/libs/math/reporting/performance 目录下,您会发现一些相当全面的性能测试应用程序,用于测试此库。
为了生成您在此文档中看到的表格(或针对您特定编译器的其他表格),您需要在该目录中调用 bjam
,并使用支持 C++11 的编译器。请注意,结果会扩展/覆盖 boost-path/libs/math/reporting/performance/doc/performance_tables.qbk 中已有的内容,您可能希望在开始之前删除此文件,以便为您的特定系统进行全新开始。
这些程序以 Boost 的 Quickbook 格式生成结果,这种格式的可读性不强。如果您配置了 user-config.jam 文件以构建 Docbook 文档,您还将获得一份完整的 HTML 格式数据摘要,位于 boost-path/libs/math/reporting/performance/html/index.html。假设您使用的是类 Unix 平台,执行此操作的步骤是首先安装 xsltproc
、Docbook DTD
和 Bookbook XSL
包。然后:
using xsltproc ;
(注意每个标记周围的空格,包括最后的“;”,这很重要!)。这假设 xsltproc
存在于您的路径中。using boostbook : path-to-xsl-stylesheets : path-to-dtd ;
。`path-to-dtd` 应指向 Docbook DTD 的 4.2.x 版本,而 `path-to-xsl-stylesheets` 应指向包含最新 XSLT 样式的文件夹。所有路径都应使用正斜杠,即使在 Windows 上也是如此。此时,您应该能够运行测试并生成 HTML 摘要。如果 GSL、RMath 或 libstdc++ 存在于编译器的路径中,它们将被自动测试。对于 DCDFLIB,您需要将 C 源文件放在 boost-path/libs/math/reporting/performance/third_party/dcdflib 中。
如果您想比较多个编译器,或同一个编译器的多个选项,那么您需要多次调用 bjam
,每个编译器一次。请注意,为了测试同一个编译器的多个配置,每个配置在测试程序中都必须有一个唯一的名称,否则它们都会编辑相同的表格单元格。假设您想测试 GCC 是否使用 -ffast-math 选项,在这种情况下,bjam 将首先被调用为:
bjam toolset=gcc -a cxxflags=-std=gnu++11
这将使用默认优化选项(-O3)运行测试,然后我们可以再次使用 -ffast-math 运行。
bjam toolset=gcc -a cxxflags='-std=gnu++11 -ffast-math' define=COMPILER_NAME='"GCC with -ffast-math"'
在上面的命令行中,-a 标志强制进行完全重建,并且需要将预处理器定义 COMPILER_NAME 设置为描述编译器配置的字符串字面量,因此使用了双引号——一个用于命令行,一个用于编译器。