如何从多行的日志文件中获取时间戳

时间:2015-08-06 13:13:49

标签: performance datetime

我需要将日志文件中的数据导入数据集。 每行包含一个索引,一个时间戳和十六进制格式的过程数据。 所有数据都存储在一个字符串数组中(每一行都是该数组的成员)。

在包含以下内容的循环中提取数据并将其转换为数据集:

LineNumber = Convert.ToInt32(dummystring.Substring(0, 7), 16);
year = Convert.ToInt32(dummystring.Substring(8, 2), 16) + 2000;
month = Convert.ToInt32(dummystring.Substring(10, 2), 16);
day = Convert.ToInt32(dummystring.Substring(12, 2), 16);
hour = Convert.ToInt32(dummystring.Substring(14, 2), 16);
minute = Convert.ToInt32(dummystring.Substring(16, 2), 16);

到目前为止一切顺利;快速稳定(处理500 000行< 1s)。

我想通过创建时间戳来对条目(=行)进行排序。 所以我只添加了一行:

TimeStamp = new DateTime(year, month, day, hour, minute, 0);
一切都冻结了;现在需要几分钟......

我怎样才能加快速度?

1 个答案:

答案 0 :(得分:0)

我刚刚与ZedGraph找到了一个很好的方法:

....
XDate timestamp = 0;    
....
year = int.Parse(dummystring.Substring(8, 2), NumberStyles.HexNumber) + 2000;
month = int.Parse(dummystring.Substring(10, 2), NumberStyles.HexNumber);
day = int.Parse(dummystring.Substring(12, 2), NumberStyles.HexNumber);
hour = int.Parse(dummystring.Substring(14, 2), NumberStyles.HexNumber);
minute = int.Parse(dummystring.Substring(16, 2), NumberStyles.HexNumber);
timestamp.SetDate(year, month, day, hour, minute, 0);

这非常快速和舒适。