Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么FireFox插件中的JavaScript比FireFox中加载的网页中的JavaScript慢?_Javascript_Performance_Firefox_Firefox Addon - Fatal编程技术网

为什么FireFox插件中的JavaScript比FireFox中加载的网页中的JavaScript慢?

为什么FireFox插件中的JavaScript比FireFox中加载的网页中的JavaScript慢?,javascript,performance,firefox,firefox-addon,Javascript,Performance,Firefox,Firefox Addon,我想知道为什么相同的JavaScript代码在FireFox插件(使用插件SDK)中要比直接在FireFox加载的网页中运行慢得多 例如,此代码: function isPrime(number) { var i, prime = true; for(i = 2 ; i < number ; ++i) { if(number % i === 0) { prime = false; } }

我想知道为什么相同的JavaScript代码在FireFox插件(使用插件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);
函数isPrime(数字){
var i,
prime=true;
对于(i=2;iabout:config
页面访问)控制javascript优化:
javascript.options.methodjit.chrome
用于特权代码(扩展)和
javascript.options.methodjit.content
用于不受信任的代码(网页)

Firefox的某些版本出厂时默认禁用了前者


检查
javascript.options.methodjit.chrome
是否设置为
true

当前版本的firefox中也存在一个bug,阻止在插件中完全JIT javascript,有关详细信息,请参阅代码是什么时候运行的?因为浏览器在启动时负载很重?我可能在告诉一个愚蠢的瘦用户g、 当然有人会反驳我,但网页是否可能“缓存”
isPrime
的结果,而加载项没有?这段代码是在浏览器启动时加载的。但是我尝试在点击按钮时运行这段代码,速度很慢。我不知道是否有缓存。这个答案需要更多细节。请向OP解释这个pref选项的作用,如何找到它,等等。否则,就目前而言,答案是正确的应该是评论而不是回答。这是真的。这意味着什么?@antoyo基本点是JavaScript JIT(或者至少是其中一个;Firefox中有几个在不同点触发)可以在扩展和网页中单独禁用。因此,网页中的代码可能正在进行jit,而扩展中的代码可能没有。@antoyo因为已经启用了chrome的jit,所以您可以做的不多。我有根据的猜测是,某些优化无论如何都不适用于chrome。也许这是错误的这是一个尝试网络工作者的好主意。