javascript - 为什么 JavaScript 在 FireFox 附加组件中比在 FireFox 加载的网页中慢?

标签 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;
        }
    }
    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 打开的网页中运行时间不到 2 秒,但在 FireFox 附加组件中运行大约需要 15 秒。

我知道代码可以更好,但这只是一个例子来说明它有多慢。

为什么 FireFox 附加组件这么慢?

有什么方法可以让它更快(不更改此代码,因为正如我上面所说,它只是一个示例)?

更新:

好像跟Add-on SDK有关。我做了另一个测试:我在一个不使用附加 SDK 的附加组件中执行相同的代码,代码执行时间大约为 3 秒。

为什么使用附加组件 SDK 的附加组件与不使用它的附加组件之间存在如此巨大的差异(3 秒对 15 秒)?

最佳答案

有两个首选项(可从 about:config 页面访问)控制 javascript 优化:javascript.options.methodjit.chrome 用于特权代码(扩展)和javascript.options.methodjit.content 用于不受信任的代码(网页)。

某些版本的 Firefox 默认禁用前者。

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

关于javascript - 为什么 JavaScript 在 FireFox 附加组件中比在 FireFox 加载的网页中慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17136245/

相关文章:

sql - Oracle查询: date filter gets really slow

java - Selenium 使用 Css 在表中定位单元格

javascript - 网络 worker 不在 firefox 8 中工作,在 firefox 7 中工作

javascript - 在不更改哈希值或 URL 的任何其他部分的情况下将历史条目添加到浏览器

javascript - 为什么我的页面会自动重新加载?

javascript - 如何字符串替换和字符串重新排列

java - 使用 spring Application Context 时的性能问题

javascript - 传递给自定义过滤器的数据未定义

Javascript - 显示和隐藏大量列表项的最快方法

css - :target css pseudoclass doesn't work properly in Firefox when it's set on content inside iframe