我有一个包含100万行左右的文件。
{<uri::rdfserver#null> <uri::d41d8cd98f00b204e9800998ecf8427e> <uri::TickerDailyPriceVolume> "693702"^^<xsd:long>}
{<uri::rdfserver#null> <uri::d41d8cd98f00b204e9800998ecf8427e> <uri::TickerDailyPriceId> <uri::20fb8f7d-30ef-dd11-a78d-001f29e570a8>}
每一行都是一个语句。
struct Statement
string C;
string S;
string P;
string O;
string T;
目前我正在使用一个while循环中的TextReader,并使用正则表达式解析每一行:
Regex lineParse = new Regex(@"[^<|\""]*\w[^>\""]*", RegexOptions.Singleline | RegexOptions.Compiled);
这种解析需要花费相当长的时间,我希望有人能指点一下更高效的解析策略。
有些行有5个匹配项,有些只有4个。以下是每行的解析方式:
{<uri::rdfserver#null> <uri::d41d8cd98f00b204e9800998ecf8427e> <uri::TickerDailyPriceVolume> "693702"^^<xsd:long>}
Statement()
C = uri::rdfserver#null
S = uri::d41d8cd98f00b204e9800998ecf8427e
P = uri::TickerDailyPriceVolume
O = 693702
T = xsd:long
{<uri::rdfserver#null> <uri::d41d8cd98f00b204e9800998ecf8427e> <uri::TickerDailyPriceId> <uri::20fb8f7d-30ef-dd11-a78d-001f29e570a8>}
Statement()
C = uri::rdfserver#null
S = uri::d41d8cd98f00b204e9800998ecf8427e
P = uri::TickerDailyPriceId
O = uri::20fb8f7d-30ef-dd11-a78d-001f29e570a8
来自评论的额外信息:“我看到的低性能实际上是由于我在代码中设置的有条件断点。如果没有这个断点,一切都很快。但如果有任何改进想法,我会感兴趣。” -Eric Schoonover