Почему мое сито не видит увеличения производительности, которое должно быть? - PullRequest
0 голосов
/ 02 марта 2020

Я создал 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);
    }
  }
}

1 Ответ

1 голос
/ 03 марта 2020

Repl.it не является хорошей платформой для тестирования производительности, так как вы не знаете, как ваш код выполняется на бэкэнде.

Они могут делиться временем процессора с другими пользователями, что приводит к увеличению времени fini sh functions.

Попробуйте использовать локальный компьютер, и вы получите лучшие результаты.

...