我创建了一个repl.it,您可以按一下run键,即可查看质数取景器的筛分和非筛分实现之间的区别...
我已经为这个简单的筛子做出了我所知道的所有优化,并且期望获得更高的性能。
我是否可以对筛子进行进一步的优化以使其运行更快?
这里是代码:
/*
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不是测试性能的好平台,因为您不知道您的代码在后端如何运行。
他们可能与其他用户共享您的处理器时间,导致更长的时间完成功能。
尝试使用本地计算机,应该会得到更好的结果。