Jython、Jepp还是Pylons的性能选择

0 投票
2 回答
685 浏览
提问于 2025-04-16 07:54

我正在尝试在我的GWT(Java)项目中加入服务器端的代码比较和高亮显示功能。我成功地通过Jython把Pygments和difflib集成到我的代码中。基本的想法是先在服务器上生成完整的标记,然后简单地把代码作为innerHTML注入到页面中。

不过,我发现Jython完全不够用,即使是处理相对较小的文件(2K-3K行),Pygments或difflib也需要很长时间(几分钟而不是几秒钟)来处理这些文件。实际上,difflib在处理过程中经常会导致内存溢出错误,即使我给它分配了500M的内存。

所以我在想,我现在的设置是不是有问题,还是说Jython根本不适合这个用途?

如果是这样,那接下来该怎么办呢?我发现了Jepp,但这样的话我就得为每个平台构建我的项目,而且它的文档很少,看起来也不太稳定。还有一种可能是把Pylons作为一个独立的网络服务在同一主机上运行,直接把标记发送给客户端,或者通过服务器传输。另外一种方法是使用Java系统来执行Python脚本作为一个进程,并捕获输出。

我很想听听大家对此的具体建议。

2 个回答

0

我打算接受上面的回答,因为它和我的发现一致。不过我想告诉大家,使用像Bottle这样的Python本地解决方案来单独运行Pygments的网络服务,性能比嵌入的Jython要好很多,特别是在Linux系统上。

0

有一个单独的服务听起来是个不错的选择。对于Pygments,已经有一个服务可以使用,地址是这里(在Google的应用引擎上)。这个应用的源代码是BSD开源的,可以在GitHub上找到,链接是这里。当然,你也可以对这个代码进行修改,添加difflib的功能。

撰写回答