首页 > 解决方案 > 昂贵计算的示例

问题描述

我正在学习如何衡量性能,并想使用一些需要大约 1-2 秒来计算的代码。

我使用了以下从Mozilla获取的代码,但我想知道是否有人可以帮助我进行更简洁的操作。它不必“有意义”。

const iterations = 50;
const multiplier = 1000000000;

function calculatePrimes(iterations, multiplier) {
  var primes = [];
  for (var i = 0; i < iterations; i++) {
    var candidate = i * (multiplier * Math.random());
    var isPrime = true;
    for (var c = 2; c <= Math.sqrt(candidate); ++c) {
      if (candidate % c === 0) {
        // not prime
        isPrime = false;
        break;
      }
    }
    if (isPrime) {
      primes.push(candidate);
    }
  }
  return primes;
}

function doPointlessComputationsWithBlocking() {
  var primes = calculatePrimes(iterations, multiplier);
  pointlessComputationsButton.disabled = false;
  console.log(primes);
}

标签: javascriptperformance

解决方案


以“需要时间”为目的进行操作的最简单方法是只在一段时间内不做任何事情:

function wait(seconds) {
  var start = new Date();
  //empty while loop until the required amount of time has passed
  while((new Date() - start) / 1000 < seconds);
}

var begin = performance.now();

console.log("start");

wait(2);

console.log("finish in", performance.now() - begin, "ms");

如果您需要它不确定,您可以添加或修改随机数量的等待时间:

function wait(seconds) {
  // add or subtract up to 50% 
  seconds *= Math.random() + 0.5;
  var start = new Date();
  while((new Date() - start) / 1000 < seconds);
}

var begin = performance.now();

console.log("start");

wait(2);

console.log("finish in", performance.now() - begin, "ms");


推荐阅读