Zastanawiam się, dlaczego ten sam kod JavaScript jest znacznie wolniejszy w dodatku FireFox (przy użyciu dodatku SDK), niż działa bezpośrednio na stronie załadowanej w FireFox.Dlaczego JavaScript jest wolniejszy w dodatku FireFox niż na stronie załadowanej w FireFox?
Na przykład, ten kod:
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);
zajmuje mniej niż 2 sekundy, aby uruchomić na stronie internetowej otwarty w FireFox, ale trwa około 15 sekund, aby uruchomić w Firefoxa.
Wiem, że kod mógłby być lepszy, ale jest to tylko przykład pokazujący, jak powolny jest.
Dlaczego jest tak wolno w dodatku FireFox?
Czy jest jakiś sposób, aby uzyskać to szybciej (bez zmiany tego kodu, ponieważ jest, jak powiedziałem powyżej, tylko przykład)?
Aktualizacja:
Wydaje się być związane z Add-on SDK. Zrobiłem kolejny test: wykonałem ten sam kod w dodatkach, które nie używają dodatkowego pakietu SDK, a kod wykonuje się w ciągu około 3 sekund.
Dlaczego tak duża różnica (3 sekundy w stosunku do 15 sekund) między dodatkiem przy użyciu dodatku SDK i dodatkiem, który go nie używa?
Kiedy kod jest prowadzony? Ponieważ przeglądarka była obciążona dużym obciążeniem, ponieważ była uruchamiana? –
Prawdopodobnie mówię głupią rzecz, i na pewno ktoś mnie obali, ale czy jest możliwe, że strona internetowa "buforuje" wyniki 'isPrime', podczas gdy dodatek nie działa? –
Ten kod został załadowany podczas uruchamiania przeglądarki. Ale próbowałem uruchomić ten kod po kliknięciu przycisku i jest tak wolny. I nie wiem, czy jest jakaś pamięć podręczna. – antoyo