我创建了一个 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/