我有一個可變長度的日誌文件,它可能包含或不包含我正在查找的字符串。從文本文件中提取某些行的最有效方法
行有時間戳等,然後<參數>#<值>我想檢查參數並提取值。
下面的實現工作,但我相信必須有一個更有效的方法來解析文件。
要點:
- 大部分線路都將被忽略
- 有大約1 16個時至日誌文件 - MB 甚至每個文件一個小的收穫將是一個優勢
NB。解析函數調用的子字符串然後將其轉換是爲int
任何想法非常讚賞
ifstream fileReader(logfile.c_str());
string lineIn;
if(fileReader.is_open())
{
while(fileReader.good())
{
getline(fileReader,lineIn);
if(lineIn.find("value1#") != string::npos)
{
parseValue1(lineIn);
}
else if(lineIn.find("value2#") != string::npos)
{
parseValue2(lineIn);
}
else if(lineIn.find("value3#") != string::npos)
{
parseValue3(lineIn);
}
}
}
fileReader.close();
您是否運行了一個分析器來查看您的代碼花費的最多時間?這通常是幫助優化的好主意。 – Floris 2013-03-06 17:10:26
@dougie:畢竟你成功地使你的搜索效率? – 2015-02-01 17:25:07