Pau*_*ulH 5 c++ string performance map
我有一个程序,可以逐行读取文件中的数据.我想将该行的一些子字符串复制到地图中,如下所示:
std::map< DWORD, std::string > my_map;
DWORD index; // populated with some data
char buffer[ 1024 ]; // populated with some data
char* element_begin; // points to some location in buffer
char* element_end; // points to some location in buffer > element_begin
my_map.insert( std::make_pair( index, std::string( element_begin, element_end ) ) );
Run Code Online (Sandbox Code Playgroud)
此std::map<>::insert()操作需要很长时间(它使文件解析时间加倍).有没有办法让这个更便宜的操作?
谢谢,PaulH
编辑:更具体地说,我想知道我正在进行最少数量的复制操作,以便将文件中的数据传入地图.
小智 1
稍微回答一下你的补充问题。尝试将映射暂时更改为字符串向量,然后计时将固定字符串值插入到向量中例如:
vector <string> v;
string s( "foobar" );
your insert loop:
v.push_back( s );
Run Code Online (Sandbox Code Playgroud)
这应该给你一个关于速度可能的下限。
另外,您应该在打开所有优化的情况下计时(如果您还没有这样做)。这可以对许多标准库操作产生惊人的影响。