std::vector< std::string > results;
results.resize( m_cluster_num, "" );
char temp[255];
for( int i=0; i< m_data_num; i++ )
{
label_index = m_labels->at(i);
if ( label_index < m_cluster_num )
{
temp[0]='\0';
results.at( label_index ) = results.at( label_index ) + temp;
}
}
对于上面的这段代码,如果m_data_num为百万级别,那么其执行的时间将耗费数小时,其主要的原因就在于string的+操作符实质上是重载了+=操作符,所以,每次都会生成一个临时对象,还要赋回给原值,在参与拼接的串达到百万级别时,速度可想而知,用
results.at( label_index ) += temp;
代替后,时间立刻降到百秒以内,效果十分明显!
posted on 2009-11-25 16:44
Thunder 阅读(810)
评论(5) 编辑 收藏 引用