FireFoxで読み込まれたWebページで直接実行するよりも、同じJavaScriptコードがFireFoxアドオン(アドオンSDKを使用)でかなり遅いのはなぜですか?例えばFireFoxアドオンでJavaScriptがFireFoxに読み込まれたWebページより遅いのはなぜですか?
、このコード:
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で開いたWebページで実行するために2秒未満がかかりますが、アドオンFirefoxで実行するのに約15秒かかります。
私はコードがより良いかもしれないことを知っていますが、それはどれだけ遅いかを示すための単なる例です。
なぜFireFoxアドオンが遅いのですか?
私は上記のように、このコードを変更することなく、高速化する方法はありますか?
更新:
アドオンSDKに関連すると思われます。別のテストを行いました。アドオンSDKを使用しないアドオンで同じコードを実行し、コードは約3秒で実行されます。
なぜアドオンSDKを使用しているアドオンとそれを使用していないアドオンの間に大きな違い(3秒対15秒)がありますか?特権コードについてjavascript.options.methodjit.chrome
(拡張子)と信頼できないコード(Webページ)のためのjavascript.options.methodjit.content
:
を見るためにバグが、アドオンではJavaScriptを完全にJITを防ぐためのFirefoxの現在のバージョンでもありますか?ブラウザが起動していたために負荷がかかっていましたか? –
私はたぶん愚かなことを言っているでしょうし、確かに誰かが私を反証するでしょうが、アドオンがないうちにウェブページが 'isPrime'の結果を"キャッシュ "する可能性はありますか? –
このコードは、ブラウザの起動時に読み込まれました。しかし、私はボタンクリックでこのコードを実行しようとしたが、それは遅いです。キャッシュがあるかどうかわかりません。 – antoyo