サーバー上で実行され、クライアントからパケットを受信するアプリケーションを作成しました。アプリケーションのジョブは、パケットを受信し、それらを解析して分析し、結果を生成することです。パケットが許容可能な形式である場合、それらを csv ファイルに書き込むか、正しい形式でない場合はログ ファイルを生成します。アプリケーションは正常に動作していますが、アプリケーションのパフォーマンスのプロファイリングを行ったところ、ほとんどの CPU サイクルまたは時間が csv ファイルへの書き込みとログ ファイルへの書き込みに費やされていることがわかりました。csv ファイルが大きくなると、csv ファイルへの書き込みに多くの時間またはサイクルが費やされます。以下は、ログファイルとcsvファイルに書き込むための私のコードです:-
TextWriter tsw = new StreamWriter(@filename, true);
tsw.Write(DateTime.Now.ToString("HH:mm:ss") + " ");
tsw.WriteLine("Message recieved from client(" + socketForClient.RemoteEndPoint + ") : ");
tsw.WriteLine();
tsw.Close();
static private void csv_print(string pol, params string[] printall)
{
string filename = string.Format(pol + ".csv");
TextWriter tsw = new StreamWriter(@filename, true);
for (int i = 0; i < printall.Length; i++)
{
tsw.Write("\"" + printall[i] + "\",");
}
tsw.Write(Environment.NewLine);
tsw.Close();
}
ログファイルとcsvファイルに書き込むためのより優れた高速な方法はありますか(csvファイルのデータが大きくなった場合)?