PHP中的XML解析和Python或其他替代方案一样快吗?

时间:2010-10-17 14:07:26

标签: php python xml

所以我有16 GB的XML文件需要处理(总共大约700个文件),而且我已经有了一个功能性的PHP脚本(使用XMLReader),但它需要永远。我想知道在Python中解析是否会更快(Python是我精通的唯一其他语言,我相信C中的某些东西会更快)。

3 个答案:

答案 0 :(得分:2)

我认为他们两个都可以依赖快速C库的包装器(主要是libxml2),所以解析本身不应该有太大的区别。

你可以试试是否存在由开销引起的差异,那么它取决于你要对那个XML做什么。解析它是为了什么?

答案 1 :(得分:2)

这里实际上有三个不同的性能问题:

  • 解析文件所需的时间,具体取决于各个文件的大小。
  • 处理文件系统中的文件和目录所花费的时间,如果有很多文件和目录。
  • 将数据写入数据库。

在哪里寻求性能改进取决于哪一个是最大的瓶颈。

我的猜测是最后一个是最大的问题,因为写入几乎总是最慢的:写入无法缓存,它们需要写入磁盘,如果数据已排序,则可能需要找到合适的地方来写它是一个相当长的时间。

您认为瓶颈是第一种选择,XML解析。 如果是这种情况,更改语言不是第一件事。相反,你应该看看你的语言是否有某种SAX解析器。 SAX解析比DOM解析更快,内存更有效。

答案 2 :(得分:1)

我无法确定Python是否最终会比PHP表现更好(因为我对PHP的性能特征并不十分熟悉)。不过,我可以给你一些建议。

  1. 如果您对Python和PHP的理解存在巨大差异(即您比PHP更了解PHP,请坚持使用PHP。在任何语言中表现最糟糕的是缺乏掌握。
  2. 如果你想实现一个Python解决方案,那么库中有很多东西可以使用,根据你要找的东西,你可以找到它here.
  3. 编写Python脚本来处理XML,然后在一个项目上使用它。将该脚本的运行时间与PHP脚本进行比较。如果Python脚本速度更快并且您相信它是无错误的,那就使用Python。
  4. 另外,如果您对C有一定的了解,那么在Python中您可以识别代码中的瓶颈并轻松地在C中重新实现它们(尽管我怀疑您没有机会这样做)。