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个数量级。我一直以为即使对于小值,reserve也可以加速push_back,但事实并非如此,我找不到任何明显的原因。是reserve阻止了函数内联吗?调用size()太昂贵了吗?这取决于平台吗?我将尝试在干净的环境中编写一些小型基准测试来确认这一点。
编译器:gcc (GCC) 4.4.2,带有-g -O2参数。