我公司的专有软件生成一个日志文件,如果解析它会更容易使用.我们都使用的日志解析器是由另一个员工编写的一个副项目,它的性能很糟糕.
这些日志文件可以非常快速地增长到10兆字节,如果日志文件大于1兆字节,我们当前使用的解析器会出现问题.
所以,我想编写一个程序,可以在尽可能短的时间内解析大量的文本.我们专门使用Windows,因此必须在Windows上运行.我们当前的实现在本地Web服务器上运行,我确信将其作为应用程序运行必须更快.
所有建议都会有所帮助.谢谢.
编辑:我的最终目标是解析文本并以更加用户友好的方式用颜色等显示它.你能用Perl和Python做到这一点吗?我知道你可以用Java和C++做到这一点.因此,它将像记事本一样打开日志文件,但在屏幕上显示用户友好的格式而不是原始文件.
编辑:所以,我不能选择最好的答案,那就是选择一种能够最好地展示我的目标的语言,然后在其中编写解析器.此外,使用ANTLR可能会使此过程更容易.我改变了原来的问题,因为我想我没有问我到底在想什么.感谢大家!
Maw*_*awg 16
嗯,"跟你所知道的"是一个很好的答案.Perl是为这种事物而设计的(但imo非常适合简单的解析,但我个人会在复杂的项目中避免使用它).
如果它变得有点复杂,为什么不使用正确的语法和语法设置?
Lex&Yacc(或Flex&Bison)让人想起,但我个人总是会想到Antlr
根据模式(语法)定义各种"单词",并组合这些单词(语法)和Antlr的规则将吐出一个程序来解析你的输入(你可以使用Java,C,C++等程序(你是担心解析时间,所以选择编译语言,当然)).
我个人觉得手工制作解析器很繁琐,调试它们更加繁琐,但AntlrWorks是一个可爱的IDE,真的让它变得轻而易举 ......
底部的那一点是定义语法规则.
如果你弄乱了你的语法规则,你会被告知.对于手工制作的解析器来说情况并非如此,在这种解析器中,您只是划伤body part并且想知道"奇怪的结果"......
看看这个.即使您认为您的项目现在微不足道,它也可能会增长.如果您对解析感兴趣,那么至少要熟悉lex/yacc,尤其是Antlr(Works)
小智 11
您应该使用您所知道的语言......除非您有足够的时间来完成项目,否则您还可以花时间学习一门新语言.