【发布时间】:2023-03-22 17:40:02
【问题描述】:
我已经为我们在一次讲座中使用的某种文件格式 (ARFF) 编写了一个动手操作的递归纯 Python 解析器。现在运行我的练习提交非常慢。到目前为止,大部分时间都花在了我的解析器上。消耗大量CPU时间,HD不是瓶颈。
我想知道在 python 中编写解析器有哪些高效的方法?我宁愿不要用 C 重写它。我尝试使用 jython,但这大大降低了性能!我解析的文件部分很大(> 150 MB),行很长。
我当前的解析器只需要一个字符的前瞻。我会在这里发布源代码,但我不知道这是否是个好主意。毕竟提交截止日期还没有结束。但是,本练习的重点不是解析器。您可以选择您想使用的任何语言,并且已经有 Java 解析器。
注意:我有一个 x86_64 系统,所以 psyco(它似乎也是 PyPy)不是选项。
更新:我现在将我的解析器/写入器上传到 bitbucket。
【问题讨论】:
-
你分析过你的解析器吗?可能只是阻碍一切的瓶颈之一。
-
没有代码示例就不可能给出体面的建议。您可能正在使用一种存在重大缺陷的合理技术,或者您的整个方法可能需要重新设计,我们无法知道。
-
你试过用 psyco 搭配它吗?
-
我使用
scipy.io.arff.loadarff解析 arff 文件 - 不确定它是否符合规模,但它对我很有帮助。