Jython中的BeautifulSoup

4 投票
1 回答
2052 浏览
提问于 2025-04-15 15:36

我刚刚尝试在 Jython (2.5.1) 上运行 BeautifulSoup (3.1.0.1),结果让我大吃一惊,因为它的速度比 CPython 慢得多。我用 CPython 解析一个网页(http://www.fixprotocol.org/specifications/fields/5000-5999)只花了不到一秒钟(准确来说是 0.844 秒)。而用 Jython 解析同样的网页却花了 564 秒,几乎慢了 700 倍。

有没有人能确认一下这个结果?Jython 的速度比 CPython 慢 700 倍似乎不太合理。也许我的设置有什么问题。

[编辑] 这是我用来测试的代码(当然我下载了上面提到的 HTML 文件):

import time
from BeautifulSoup import BeautifulSoup
data = open("fix-5000-5999.html").read()
start = time.time()
soup = BeautifulSoup(data)
print time.time() - start

1 个回答

6

我可以确认有类似的发现。

我使用的是Intel的Mac,操作系统是OS X 10.6.1,Java版本是1.6.0_15 64位,还有Jython 2.5.1。

用CPython 2.6.1运行你的代码大约需要0.1到0.2秒,但用Jython运行至少要几十秒;我没等超过30秒就停了。它还消耗了很多CPU资源。

我试了Beautiful Soup 3.0.7a,因为它用的是不同的解析器,但结果还是一样。

有趣的是,我试着在一个不同的HTML文件上运行你的代码,结果很好。但它还是比CPython慢得多:Jython用了1.02到1.3秒,而CPython只用了0.019到0.020秒。

目前我没有其他建议,除了你可以考虑在jython-users论坛上问这个问题;我发现那里的社区,包括主要开发者,反应很快,也很乐于助人。

祝你好运!

撰写回答