//数组形式
int *i = new int[10000];
//STL形式
vector<int> xxx;
for(int j = 0; j<10000;j++)
{
xxx.push_back(j);
}//开始计时
//STL的遍历
vector<int>::iterator p_it = xxx.begin();
for(;p_it!=xxx.end();++p_it)
{
*p_it = 2;
}
//数组的遍历
for(int m= 0 ;m<10000;m++)
{
*i = m;
i++;
}数组只用了30微妙左右
而STL确用了120毫秒- -
int *i = new int[10000];
//STL形式
vector<int> xxx;
xxx.reserve( 10000 );
for(int j = 0; j<10000;j++)
{
xxx.push_back(j);
}//开始计时
//STL的遍历
vector<int>::iterator p_it = xxx.begin();
for(int m= 0 ;m<10000;m++)
{
*p_it = 2;
p_it++;
}
//数组的遍历
for(int m= 0 ;m<10000;m++)
{
*i = m;
i++;
}
你改成这样再测试一下时间。
你这个改是多余的呢 因为计时 是从
遍历的地方开始的呢
for(int j = 0; j<10000;j++)
{
xxx.push_back(j);
}
我这个操作已经把数据放到vector去了呢
vector的数据可能不在内存里头涉及到页面交换了。
而vector用了1.2毫秒
因为采用内存池new以后没有delete
第一轮5000个并发连接来的时候响应非常快。 因为都是直接new的
断开
来第二轮 - -速度陡然下降。。客户端 出现连接不上(服务器的accpet操作不足)。。我就想是不是内存池的问题。。
一检查。。果然这么慢 响应不过来才怪- -
无形中就多了N多的函数调用,自然很慢。
数组用了4微秒
STL用了100微妙
以前还真没测试过- -