std::vector.resize的性能问题
我的环境:.net 2003 的stl。
代码如下:vector<char> v;
我为了快速的load数据到v当中,于是:
v.reserve(1024 * 1024 * 100);
v.resize(1024 * 1024 * 100);
可是,resize操作需要做构造操作,在我的机器上,上一句大概需要150ms,太慢了。
但是我需要resize之后,我才可以安全的通过&v[0]往里面塞大量数据。
因为item类型是char,根本不需要构造,于是,我重载了allocator:
struct myAlloc : public allocator<char>
{
//覆盖construct和destory,函数体为空,期望inline优化掉。
};
vector<char, myAlloc> v;
编译行参数/DNDEBUG /GX /O2 /Og /Ob2
结果平均只快了10ms左右。我不知道为什么,预想的构造循环没有被优化掉,也许,是vc7.1的stl代码的问题?我很郁闷!
理论上,我reserve之后,只要修改v内部的size数据就可以了,但那个纯属hack,而且不可移植。
有没有办法快速的resize呢?或者,达到快速向vector里面放数据的目的呢?