Skip to main content
File

title: mostPerformant tags: function,intermediate

JS TODO

Returns the index of the function in an array of functions which executed the fastest.

Use Array.prototype.map() to generate an array where each value is the total time taken to execute the function after iterations times. Use the difference in performance.now() values before and after to get the total time in milliseconds to a high degree of accuracy. Use Math.min() to find the minimum execution time, and return the index of that shortest time which corresponds to the index of the most performant function. Omit the second argument, iterations, to use a default of 10,000 iterations. The more iterations, the more reliable the result but the longer it will take.

const mostPerformant = (fns: Function[], iterations = 10000) => {
  const times = fns.map((fn) => {
    const before = performance.now();
    for (let i = 0; i < iterations; i++) fn();
    return performance.now() - before;
  });
  return times.indexOf(Math.min(...times));
};
mostPerformant([
  () => {
    // 10x time iterate
    fillArray(10000, "1").every((el) => typeof el === "number");
  },
  () => {
    fillArray(1000, "2").every((el) => typeof el === "number");
  },
]); // 1