我有一个程序从 .csv 读取数据并创建一个multimap
. 我在下面粘贴了一个简单的版本。它工作正常,但在退出时运行速度非常慢(即,一旦程序打印出输出并到达return 0;
. 我正在处理相对较大的文件,例如,从 50 到几百兆字节不等。退出时的延迟不足为奇,与文件大小成正比。
我想知道有没有什么办法可以加快退出速度?我的猜测是它很慢,因为它正在从内存中清除数据。 CTRL+c
但是,在终端窗口中会立即将其关闭。我看过但没有找到太多。
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <vector>
#include <map>
int main (int argc, char* argv[])
{
std::string filename = "edge_data_mid.csv";
// obtain multimaps
std::ifstream fin;
fin.open(filename.c_str(), std::ios_base::in|std::ios_base::binary);
if (!fin.is_open()) {
std::cout << "could not open the file '" << filename << "'" << std::endl;
exit(EXIT_FAILURE);
}
std::multimap<std::string, std::string> gciting;
std::string line;
// this loop parses the file one line at a time
while (getline(fin, line)) {
std::istringstream linestream(line);
std::string item;
std::string nodea;
std::string nodeb;
getline(linestream, item, ',');
nodea = item;
getline(linestream, item);
nodeb = item;
gciting.insert(std::pair<std::string, std::string>(nodeb, nodea));
}
fin.close();
std::cout << gciting.count("3800035") << std::endl;
return 0;
}