【发布时间】:2011-05-15 23:25:57
【问题描述】:
我使用 boost 单元测试库完成了大约一百个简单的测试。不仅编译时间很长(大约半分钟),而且生成的可执行文件的大小也变得非常大——仅仅一百个简单的测试就达到了 4MB。如果在没有使用 boost 测试的情况下完成测试,则可执行文件大小仅为 120kB。
我怎样才能减轻臃肿?这个问题只是因为兴趣,而不是我需要测试代码才能有闪亮的性能:)
调试信息已被剥离。我已经尝试了所有优化选项,但没有成功。
编辑:
每个测试基本如下:
PlainOldDataObject a, b;
a = { ... initial_data ... };
a = some_simple_operation(a);
b = { ... expected_result ... };
BOOST_CHECK(std::memcmp(&a, &b, sizeof(PlainOldDataObject)) == 0);
【问题讨论】:
-
也许您可以包含您正在谈论的内容的 sn-p。目前,只有真正经历过您所描述的事情的人才能做出回应。我可能会大胆猜测您可以合并一些 *.cpp(翻译单元)并禁用内联(gcc 上的
-Os -fno-inline) -
您知道,许多人将 boost 用作 C++ 的圣杯,但它产生看似不合理的膨胀的次数比您预期的要多。以 boost::serialization 为例:P
-
kizzx2:是的,在进一步检查预处理源和生成的程序集之后,我相当肯定 boost 单元测试框架只是设计错误,因为每次测试都会生成大量代码。必须可以将大部分代码放入单独的函数中。