javascript - 为什么我的筛子没有看到应有的性能提升?

标签 javascript optimization primes

我创建了一个 repl.it,你可以点击运行并查看素数查找器的筛子和非筛子实现之间的区别...

repl.it

我已经对这个简单的筛子进行了我所知道的所有优化,并期望获得更高的性能增益。

我可以对筛子进行进一步的优化以使其运行得更快吗?

这里是代码:

/*
  PRIME 2
*/
function prime2(n){
  const primes = [2];
  not_prime: for(let i = 3; i < n; i += 2){
    for(let j = 2; j * j <= i; j++){
      if(i % j === 0){
        continue not_prime;
      }
    }
    primes.push(i);
  }
  return primes;
}

/*
  PRIME 3 - SIEVE
*/
function prime3 (n) {
  const primes = [];
  const sieve = (new Array(n)).fill(true);
  for (let i = 2; i * i <= n; i += 1) {
    if (sieve[i]) {
      for (let j = i * i; j <= n; j = j + (i * 2)) {
        sieve[j] = false;
      }
    }
  }
  makePrimes(sieve, primes, n);
  return primes;
};
function makePrimes(sieve, primes, n){
  for (let i = 2; i < n; i++) {
    if(sieve[i]) {
      primes.push(i);
    }
  }
}

最佳答案

Repl.it 不是一个测试性能的好平台,因为您不知道代码在后端如何运行。

他们可能会与其他用户共享您的处理器时间,从而导致完成功能所需的时间更长。

尝试使用本地计算机,您应该会得到更好的结果。

关于javascript - 为什么我的筛子没有看到应有的性能提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60491127/

相关文章:

c++ - 应用程序的缓存友好设计

go - 这个例子中的 channel 是如何工作的?

c++ - 筛选高达 20 亿给出段错误

javascript - 遍历文本框插入不在数组中的值文本框

javascript - 忽略 CSS 过渡

php - 如何减少 PHP 中的图像加载时间

c++ - 如何找到与给定数字相加的最小本数

javascript - 如何向sails.js 中的所有模型添加实例方法?

javascript - 为什么 typescript ReadonlyArrays 在编译为 javascript 时是 mutlabe

python - 使用贝叶斯优化时队列为空