Boost C++ 库

……这是世界上备受推崇、设计精良的 C++ 库项目之一。 Herb SutterAndrei AlexandrescuC++ Coding Standards

性能测试应用程序 - Boost C++ 函数库
PrevUpHomeNext

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 平台,执行此操作的步骤是首先安装 xsltprocDocbook DTDBookbook XSL 包。然后:

  • boost-path/tools/build/example/user-config.jam 复制到您的主目录。
  • 在文件末尾添加 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 设置为描述编译器配置的字符串字面量,因此使用了双引号——一个用于命令行,一个用于编译器。


PrevUpHomeNext