1

目前,我正在使用 Rhino 引擎在服务器端执行一些大块的 javascript 代码。但是,有时,它需要很长时间(超过 10 分钟)并耗尽所有 CPU 使用率(至少在我的本地开发环境中,它现在正在这样做)。

所以我想知道我能做些什么来改进当前的系统,或者我可以在那里尝试一个新系统。

任何想法将不胜感激。

谢谢!

加:代码太大时抛出异常:java.lang.Exception:没有与当前线程关联的上下文

4

3 回答 3

0

您可以在运行之前编译脚本并缓存编译后的版本,请参见http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/javax/script/CompiledScript.html

(编辑:操作......我不知道这是否适用于 sdk 1.4)

于 2010-07-15T18:42:09.633 回答
0

我们首先必须知道您正在执行的 Javascript 块有多大?10行?50行?1000 行?

如果它得到 50+,那么编译可能会有所帮助。由于您使用的是 1.4,因此您必须使用官方的 Rhino 发行版而不是 javax.script。在这种情况下,只需使用rhino 编译器

不过,首先,你有没有分析过你的程序?也许它是导致问题的其他原因。

您确定您的算法尽可能高效吗?

在指责犀牛之前请考虑这些

于 2010-07-29T08:41:39.350 回答
0

您从数据库动态生成整个 javascript 代码?也许您可以考虑编写一段修复代码,并使用以下功能将数据填充到代码中:

        ScriptableObject.putProperty(scope, "out", out);
        ScriptableObject.putProperty(scope, "script", script);

然后您可以编译它,并将“范围”存储在某处并重用它。

使用 Rhino 的最新版本,它在版本中总是有一个 'jdk1.4' jar,使用它,也许它会有所帮助。

于 2011-11-09T03:17:04.767 回答