Самая производительная функция

JavaScriptJavaScriptBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабе мы будем исследовать и практиковать, как писать производительную функцию, которая возвращает индекс самой быстрой исполняющейся функции из массива функций. Лаборатория сосредоточена на использовании performance.now() и Array.prototype.map() для точного измерения времени выполнения функций и их сравнения. В конце лабы вы будете лучше понимать, как оптимизировать свой код для максимальной производительности.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/BasicConceptsGroup -.-> javascript/loops("Loops") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28502{{"Самая производительная функция"}} javascript/data_types -.-> lab-28502{{"Самая производительная функция"}} javascript/arith_ops -.-> lab-28502{{"Самая производительная функция"}} javascript/comp_ops -.-> lab-28502{{"Самая производительная функция"}} javascript/loops -.-> lab-28502{{"Самая производительная функция"}} javascript/higher_funcs -.-> lab-28502{{"Самая производительная функция"}} javascript/spread_rest -.-> lab-28502{{"Самая производительная функция"}} end

Как найти самую производительную функцию в JavaScript

Чтобы найти самую производительную функцию в JavaScript, следуйте этим шагам:

  1. Откройте Терминал/SSH и введите node, чтобы начать практиковать программирование.
  2. Используйте Array.prototype.map(), чтобы сгенерировать массив, где каждое значение — это общее время выполнения функции после iterations раз.
  3. Используйте разницу между значениями performance.now() до и после выполнения, чтобы получить общее время в миллисекундах с высокой степенью точности.
  4. Используйте Math.min(), чтобы найти минимальное время выполнения, и верните индекс этого самого короткого времени, который соответствует индексу самой производительной функции.
  5. Если вы опустите второй аргумент, iterations, функция будет использовать значение по умолчанию 10000 итераций. 6.牢记,使用的迭代次数越多,结果就越可靠,但所需的时间也就越长。

Вот пример кода:

const mostPerformant = (fns, 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([
  () => {
    // Проходит по всему массиву перед возвратом `false`
    [1, 2, 3, 4, 5, 6, 7, 8, 9, "10"].every((el) => typeof el === "number");
  },
  () => {
    // Требуется только до индекса `1`, прежде чем вернуть `false`
    [1, "2", 3, 4, 5, 6, 7, 8, 9, 10].every((el) => typeof el === "number");
  }
]); // 1

Резюме

Поздравляем! Вы завершили лабу по самой производительной функции. Вы можете практиковать в более лабах в LabEx, чтобы улучшить свои навыки.