inline void add(const DataStruct& rhs) {
using namespace boost::assign;
vec.reserve(vec.size() + 3);
vec += rhs.a, rhs.b, rhs.c;
}
上面的函数执行了大约 17000 次,它执行(据我所见。涉及一些转换)在调用 vector::reserve 时会差大约 2 个数量级。
我一直认为即使对于较小的值,储备也可以加快 push_back 的速度,但这似乎不是真的,我找不到任何明显的理由为什么不应该这样。保留会阻止函数的内联吗?对 size() 的调用是否太贵了?这取决于平台吗?我将尝试编写一些小型基准测试,以在干净的环境中确认这一点。
编译器:gcc (GCC) 4.4.2
带 -g -O2