-2

C++ でファイル パーサーを作成する必要があります。

これが私のコードです:

std::string line;       
vector<string> slice;

while(getline(m_inputStream, line))  
{           
}

私のファイルは大きいので、このループには 12 秒かかります。

私のC#コードは次のとおりです。

StreamReader sr = new StreamReader(fileName);
string strline = "";

while (!sr.EndOfStream)
{
    strline = sr.ReadLine();
}

0.6 秒かかります... C++ で何が間違っているのでしょうか?

4

1 に答える 1

2

まず、何をしているのsliceですか?

C# バージョンが文字列を読み込んで破棄している可能性があります。c# JIT はそれをノーオペレーションに最適化しているため、初期化と終了に 0.6 秒かかります。C++ バージョンは文字列を読み取るコードを生成するため、実際に入力ファイルを処理しています。パフォーマンスを比較する場合は、C++ がリリース設定でビルドされていることを確認してください。デバッグ コードはパフォーマンスにとって意味がありません。

文字列で何かをすると、さまざまなパフォーマンス数値が表示され、両方のシステムでメモリ使用量も確認できます。C# の方が GC が開始されるまで、より多くの RAM を使用します。

于 2012-06-05T13:45:17.273 に答える