何もない空虚

動画を作っていたりいなかったり

ライジングリーン 

こんにちは、正午前、いよいよ夏模様ですね。
昨晩深夜には大雨が一瞬だけ降ったりと、天気が安定しませんが、今日は随分良い天気です。

今日もC#の話、自分の中でもまだ結論に至っていない話題だったりするんですが。

今の現場において、最近自分の中でプログラムの動作パフォーマンスを気にしないといけない業務が出てきまして。
簡単に内容をまとめると、以下の様な感じです。

①以下の様なテキストファイルがあるとする。

*******************************************
[0.000] el0:
00 5C 3A D2 00 00 40 06 CA 13 0A 3E 03 89 0A 8E
00 8C 3A D0 00 00 40 06 C9 E5 0A 3E 03 89 0A 8E
5D 52 00 16 CB D9 E9 64 E5 7A 54 86 E5 73 50 18
44 70 A0 C7 00 00 70 D6

[0.000] el0:
5D 52 00 16 CB D9 E9 64 E5 DE 54 86 E5 73 50 18
00 5C 3A D2 00 00 40 06 CA 13 0A 3E 03 89 0A 8E
00 8C 3A D0 00 00 40 06 C9 E5 0A 3E 03 89 0A 8E

*******************************************

②このテキストファイルに対し、余分な行を削除し、16進数のヘッダを付けたテキストファイルを保存する。(Hex形式というらしい)

*******************************************
0000 00 5C 3A D2 00 00 40 06 CA 13 0A 3E 03 89 0A 8E
0010 00 8C 3A D0 00 00 40 06 C9 E5 0A 3E 03 89 0A 8E
0020 5D 52 00 16 CB D9 E9 64 E5 7A 54 86 E5 73 50 18
0030 44 70 A0 C7 00 00 70 D6

0000 5D 52 00 16 CB D9 E9 64 E5 DE 54 86 E5 73 50 18
0010 00 5C 3A D2 00 00 40 06 CA 13 0A 3E 03 89 0A 8E
0020 00 8C 3A D0 00 00 40 06 C9 E5 0A 3E 03 89 0A 8E

*******************************************

みたいな内容なんですが。
何がタチが悪いって、如何せん行数が多すぎて変換に時間がかかることかかること。
結構半端無く時間がかかります。

で、色々と調べて試してみたんですが、以下のところ以下の様なソースコードで妥協しています。

using (var sr = new StreamReader(localLogFilePath))
{
var line = string.Empty;
var i = 0;

while ((line = sr.ReadLine()) != null)
{
if (line.StartsWith("["))
{
i = 0;

continue;
}

// 改行のみの場合
if (line == string.Empty)
{
result += Environment.NewLine;
}
else
{
result += i.ToString("x4") + " " + line + Environment.NewLine;

i += 16;
}
}
}

で、書いてみて思ったのが、これまだまだ改善出来そうだよなぁ…ってことです。
CharBufferなるものを使うともっと早いらしいんですが、今のところ書き方がよくわかっていないので手を出さずじまいな今日この頃です。
trackback: -- | コメント: -- | edit