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

问题描述 投票:0回答:1

我创建了一个repl.it,您可以按一下run键,即可查看质数取景器的筛分和非筛分实现之间的区别...

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);
    }
  }
}
javascript optimization primes
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.