¿Cómo obtener el índice de la función en una array de funciones que se ejecutaron más rápido en JavaScript?

En este ejemplo, aprenderemos cómo obtener el índice de la función en una array de funciones que se ejecuta más rápido en JavaScript.

Ejemplo:

Input: fun[] = [ hello, hello1, hello2 ]
Output: index of fastest is 0.

Explanation: Function hello execute fastest in all functions.

Input: fun[] = [ while1, while2, while3 ]
Output: index of fastest function is 2 

Enfoque: Se deben seguir los siguientes pasos para resolver el problema:

  • Primero iteraremos sobre la array dada.
  • Encontraremos el tiempo que tarda cada función y lo almacenaremos en una array diferente con el mismo valor de índice que el índice de la función. El tiempo empleado se puede encontrar obteniendo la diferencia de tiempo usando el método performance.now() .
  • Finalmente, imprimimos el índice mínimo obteniendo el valor mínimo de la array usando el método Math.min() .

Los siguientes ejemplos demuestran este enfoque.

Ejemplo 1:

Javascript

<script>
  // 1st function
  function hello() {
    var s = "";
    var ans = ["The", " hello function ", "takes "];
    for (var i = 0; i < 3; i++) s += ans[i];
    console.log(s);
  }
 
  // 2nd function
  function hello1() {
    var s = "";
    var ans = ["The hello1 function", " takes "];
    for (var i = 0; i < 2; i++) s += ans[i];
    console.log(s);
  }
 
  // 3rd function
  function hello2() {
    var ans = "The hello2 function takes ";
    for (var i = 0; i < 1; i++) console.log(ans);
  }
 
  // Function to check time required by each function
  function findTime(f) {
 
    // Storing initial time in start
    var start = performance.now();
 
    // Calling the function
    f();
 
    // Storing time after running the function
    var end = performance.now();
 
    // Return time taken by function
    return end - start;
  }
 
  function findMinTime() {
 
    // Initializing array of functions
    var fun = [hello, hello1, hello2];
 
    // Initialising array of time taken by function
    var ans = [];
 
    // Iterating over all the functions and
    // storing time taken by them
    for (var i = 0; i < 3; i++) {
      var n = findTime(fun[i]);
      ans[i] = n;
      console.log(ans[i]);
    }
 
    // Finding the minimum time in array
    var answer = Math.min.apply(null, ans);
    c = ans.indexOf(answer);
 
    // Return index of fastest array
    return c;
  }
 
  var minTime = findMinTime();
  console.log("Index of fastest function:", minTime);
</script>

Producción:

The hello function takes
5.8547000009566545
The hello1 function takes
0.2459999993443489
The hello2 function takes
0.19830000028014183
Index of fastest function
2

Ejemplo 2:

Javascript

<script>
  // 1st function
  function fac(n) {
    let fact = 1;
    for (let i = 1; i < 4; i++)
      fact *= i;
    console.log("Factorial of 4 is:", fact);
  }
 
  // 2nd function
  function fibo() {
    let fab = 1;
    let j = 1;
    for (let i = 2; i < 6; i++) {
      let temp = fab;
      fab += j;
      j = temp;
    }
    console.log("6th fibonacci no is:", fab);
  }
 
  // 3rd function
  function binpow() {
    let j = 2;
    let k = 22;
    for (let i = 0; i < k; i++)
      j = ((j * j) % 1e9) + 7;
    console.log(
      "Power 2 to 22 mod 1e9+7 is:", j
    );
  }
 
  // Function to check time required
  // by each function
  function findTime(f) {
 
    // Storing initial time in start
    var start = performance.now();
 
    // Calling the function
    f();
 
    // Storing time after running the function
    var end = performance.now();
 
    // Return time taken by function
    return end - start;
  }
 
  function findMinTime() {
 
    // Initializing array of functions
    var fun = [fac, fibo, binpow];
 
    // Initialising array of time
    // taken by function
    var ans = [];
 
    // Iterating over all the functions
    // and storing time taken by them
    for (var i = 0; i < 3; i++) {
      var n = findTime(fun[i]);
      ans[i] = n;
      console.log(ans[i]);
    }
 
    // Finding the minimum time in array
    var answer = Math.min.apply(null, ans);
    c = ans.indexOf(answer);
 
    // Return index of fastest array
    return c;
  }
 
  var minTime = findMinTime();
  console.log("Index of fastest function:",
              minTime);
</script>

Producción:

Factorial of 4 is: 6
7.554999999701977
6th fibonacci no is: 8
0.22690000012516975
Power 2 to 22 mod 1e9+7 is: 221047735
0.25120000168681145
Index of fastest function: 1

Publicación traducida automáticamente

Artículo escrito por satyam00so y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *