Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Rhino分析Javascript代码_Java_Javascript_Rhino_Ejs - Fatal编程技术网

使用Rhino分析Javascript代码

使用Rhino分析Javascript代码,java,javascript,rhino,ejs,Java,Javascript,Rhino,Ejs,我正在开发一个系统,该系统预先生成CanJS应用程序的页面。这样我们的页面就可以立即使用,我们不需要用#来处理SEO内容!和无头浏览器 问题在于,的性能似乎比V8或现代浏览器中使用的其他本机Javascript引擎慢得多。而在浏览器内部,页面最坏情况下需要3-4秒来生成EJS模板,需要10-12分钟。页面和生成器都使用从RESTful API收集的相同JSON 我使用最高优化级别创建了Javascript上下文: context = ContextFactory.getGlobal(). con

我正在开发一个系统,该系统预先生成CanJS应用程序的页面。这样我们的页面就可以立即使用,我们不需要用#来处理SEO内容!和无头浏览器

问题在于,的性能似乎比V8或现代浏览器中使用的其他本机Javascript引擎慢得多。而在浏览器内部,页面最坏情况下需要3-4秒来生成EJS模板,需要10-12分钟。页面和生成器都使用从RESTful API收集的相同JSON

我使用最高优化级别创建了Javascript上下文:

context = ContextFactory.getGlobal().
context.setOptimizationLevel(9);
scope = context.initStandardObjects();
scriptable = context.newObject(scope);
使用当前

现在,一旦我调用这个方法,它需要很长时间

HashMap<String, Object> parameters = new HashMap<String, Object>();
// ...
// ... loading some content into parameters hashmap
// ...
String ejsTemplate = "... a pre loaded ejs template from file ..."
String serializedParameters = jsonParser.toJson(parameters);
Function fct = (Function) scope.get("invokeEjs", scope);
Object resultTemp = fct.call(context, scriptable, scriptable, new Object[] { ejsTemplate, serializedParameters });
HashMap参数=新的HashMap();
// ...
// ... 将一些内容加载到hashmap参数中
// ...
String ejsTemplate=“…从文件中预加载的ejs模板…”
String serializedParameters=jsonParser.toJson(参数);
函数fct=(函数)scope.get(“invokeEjs”,scope);
Object resultTemp=fct.call(上下文、可编写脚本、可编写脚本、新对象[]{ejsTemplate、serializedParameters});
serializedParameters可能会变得非常大,但这不会影响浏览器,我希望Rhino实现不会花费超过两倍的时间


我现在被困在这里,不知道如何继续。如何分析花费那么多时间的内容?原因是什么?

不要使用Rhino。这太慢了。看看node.js或Phantom.jsmh,好吧,因为我可以本机使用javascript。。。糟糕的是,没有快速的翻译。但在这种情况下,切换到nodejs并得到了一个后续问题:可能重复的
HashMap<String, Object> parameters = new HashMap<String, Object>();
// ...
// ... loading some content into parameters hashmap
// ...
String ejsTemplate = "... a pre loaded ejs template from file ..."
String serializedParameters = jsonParser.toJson(parameters);
Function fct = (Function) scope.get("invokeEjs", scope);
Object resultTemp = fct.call(context, scriptable, scriptable, new Object[] { ejsTemplate, serializedParameters });