自v2.1.16起,r.js依赖关系跟踪显着减慢了吗?还是只是我?

时间:2015-05-01 13:06:15

标签: performance requirejs amd

我注意到r.js版本2.1.16 / 2.1.17中的构建时间与2.1.15及之前相比有显着增加。额外的时间似乎是在'跟踪依赖...的'fase期间花费。

我的 for(ArrayList<String> a : names){ if(a.contains("John")){ a.set(a.indexOf("John"), "Jane"); } } 看起来像这样:

build.js

在Windows环境中使用node.js运行此构建。 ({ baseUrl: 'some/path/here', mainConfigFile: 'some/path/here', dir: 'some/path/here', modules: [ { name: "base" }, { name: "specific", exclude: ["base"] } ], findNestedDependencies: true, removeCombined: true, skipDirOptimize: true, optimize: "none" }) base都有一个不错的(但不是荒谬的)嵌套依赖项(specificbase内部引用,因此被排除在外)。在2.1.15中,这个版本在我的系统上需要±2秒;在2.1.16 / 2.1.17中,它需要±8秒。 (请注意,所有uglification都已被禁用,因此这不是一个因素)

我包含此specific以供参考,但我认为实际上我的设置不会导致速度减慢。我尝试了很多(简单)场景,它们在跟踪2.1.16 / 2.1.17的依赖关系时似乎都慢得多。

任何人都有这种情况发生吗?还是只是我?我很确定,当我的项目增长时,这个 4x 增加的构建时间将开始以指数方式惹恼我,所以请建议: - )

2 个答案:

答案 0 :(得分:3)

我在使用findNestedDependencies: true的Linux上遇到了同样的问题。 此问题在此处报告https://github.com/jrburke/r.js/issues/850

此处提及以下版本信息http://requirejs.org/docs/download.html。这是问题的最可能原因。

  

2.1.16

     

值得注意的变化发生在r.js优化器中:

     

优化程序在解析依赖项的模块时使用Esprima 2.0。这允许使用一些ES6功能。无论Esprima 2.0可以解析什么都是支持的(当在xpcshell中运行时,仍然使用Reflect.parse)。

答案 1 :(得分:0)

你可以尝试the latest r.js snapshot。 jrburke说this change带来了显着的改善。

来自github issue comment

  

[PR]#900刚刚进行了一项似乎真正减少花费时间的变化   在解析步骤中。如果构建时间较慢的人想尝试   出最新的主快照...