簡體   English   中英

為什么FireFox插件中的JavaScript比FireFox加載的網頁中的JavaScript慢?

[英]Why is JavaScript slower in a FireFox add-on than in a webpage loaded in FireFox?

我想知道為什么在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插件中這么慢?

有什么方法可以使它更快(不更改此代碼,因為如上所述,它只是一個示例)?

更新:

它似乎與附加SDK有關。 我做了另一個測試:我在不使用附加SDK的附加組件中執行了相同的代碼,並且該代碼在大約3秒鍾內執行。

為什么使用附加SDK的附加組件與不使用附加SDK的附加組件之間會有如此巨大的差異(3秒vs 15秒)?

有兩個偏好(從訪問about:config頁)控制的JavaScript優化: javascript.options.methodjit.chrome的特權代碼(擴展)和javascript.options.methodjit.content不受信任的代碼(網頁)。

某些版本的Firefox默認情況下禁用前者。

檢查javascript.options.methodjit.chrome以查看是否將其設置為true

當前版本的firefox中還存在一個錯誤,該錯誤會阻止插件中的javascript完全JIT,有關詳細信息,請參見https://bugzilla.mozilla.org/show_bug.cgi?id=913182

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM