ant*_*oyo 6 javascript performance firefox firefox-addon
我想知道为什么相同的JavaScript代码在FireFox附加组件(使用附加SDK)中比在FireFox中加载的网页中直接运行要慢得多.
例如,这段代码:
function isPrime(number) {
var i,
prime = true;
for(i = 2 ; i < number ; ++i) {
if(number % i === 0) {
prime = false;
}
}
return prime;
}
function sumFirstPrimeNumbers(x) {
var i,
sum = 0;
for(i = 1 ; i <= x ; ++i) {
if(isPrime(i)) {
sum += i;
}
}
return sum;
}
var sum = sumFirstPrimeNumbers(15000);
console.log(sum);
Run Code Online (Sandbox Code Playgroud)
在FireFox中打开的网页中运行时间不到2秒,但在FireFox附加组件中运行大约需要15秒.
我知道代码可能会更好,但它只是一个示例来说明它有多慢.
为什么FireFox附加组件会变慢?
有没有办法让它更快(不改变这个代码,因为它,如上所述,只是一个例子)?
更新:
它似乎与Add-on SDK有关.我做了另一个测试:我在附加组件中执行相同的代码,该附加组件不使用附加组件SDK,代码在大约3秒内执行.
为什么使用附加SDK的附加组件和不使用它的附加组件之间存在如此巨大的差异(3秒vs 15秒)?
有两个首选项(可从about:config页面访问)控制 javascript 优化:javascript.options.methodjit.chrome针对特权代码(扩展)和javascript.options.methodjit.content针对不受信任的代码(网页)。
某些版本的 Firefox 出厂时默认禁用前者。
检查javascript.options.methodjit.chrome是否已设置为true。