同じ JavaScript コードが、FireFox にロードされた Web ページで直接実行するよりも、(アドオン 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);
FireFox で開いた Web ページでの実行には 2 秒もかかりませんが、FireFox アドオンでの実行には約 15 秒かかります。
コードが改善される可能性があることはわかっていますが、それがどれほど遅いかを示す例にすぎません。
FireFox アドオンで遅いのはなぜですか?
高速化する方法はありますか (上記で述べたように、このコードは単なる例であるため、このコードを変更する必要はありません)。
アップデート:
Add-on SDK に関連しているようです。別のテストを行いました。アドオン SDK を使用しないアドオンで同じコードを実行したところ、コードは約 3 秒で実行されました。
アドオン SDK を使用するアドオンとそれを使用しないアドオンとの間に、なぜこのような大きな違い (3 秒と 15 秒) があるのでしょうか?