探している文字列が含まれている場合と含まれていない場合がある可変長のログファイルがあります。
行にはタイムスタンプなどがあり、その後に<parameter>#<value>が続きます。パラメーターを確認して値を抽出したいと思います。
以下の実装は機能しますが、ファイルを解析するためのより効率的な方法が必要であると確信しています。
キーポイント:
- ほとんどの行は無視されます
- 1〜20Mbの約1600のログファイルがあります
- ファイルあたりのわずかなゲインでも利点があります
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();