6

同じ 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 秒) があるのでしょうか?

4

2 に答える 2

1

Firefox の現在のバージョンには、アドオン内の JavaScript の完全な JIT を妨げるバグもあります。詳細については、https: //bugzilla.mozilla.org/show_bug.cgi?id=913182 を参照してください。

于 2013-09-06T18:56:04.517 に答える