[英]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.