为什么FireFox插件中的JavaScript比FireFox中加载的网页慢?

时间:2013-06-16 18:13:22

标签: javascript performance firefox firefox-addon

我想知道为什么FireFox插件(使用附加SDK)中的相同JavaScript代码要比直接在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);

在FireFox中打开的网页中运行时间不到2秒,但在FireFox插件中运行大约需要15秒。

我知道代码可能会更好,但它只是一个显示它有多慢的例子。

为什么FireFox插件的速度慢?

有没有办法让它更快(不改变这个代码,因为它是,如上所述,只是一个例子)?

更新

它似乎与Add-on SDK有关。我做了另一个测试:我在附加组件中执行相同的代码,该附加组件不使用附加组件SDK,代码在大约3秒内执行。

为什么使用附加SDK的附加组件与不使用附加组件的附加组件之间存在如此巨大的差异(3秒对15秒)?

2 个答案:

答案 0 :(得分:1)

有两个首选项(可从about:config页面访问)控制javascript优化:javascript.options.methodjit.chrome表示特权代码(扩展名),javascript.options.methodjit.content表示不受信任的代码(网页)。< / p>

默认情况下,某些版本的Firefox附带前者已禁用。

检查javascript.options.methodjit.chrome,看看它是否设置为true

答案 1 :(得分:1)

当前版本的firefox中还存在一个错误,它阻止了插件中javascript的完整JIT,有关详细信息,请参阅https://bugzilla.mozilla.org/show_bug.cgi?id=913182