Skip to content
Related Articles

Related Articles

How to get the index of the function in an array of functions which executed the fastest in JavaScript?
  • Last Updated : 07 Apr, 2021

In this example, we will learn how to get the index of the function in an array of functions that is executed the fastest in JavaScript.

Example:

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 funtion is 2 

Approach: The below steps have to be followed to solve the problem:

  • We will first Iterate over the given array.
  • We will find the time take by each function and store it in a different array with the same index value as the function index. The time taken can be found by getting the difference in time using the performance.now() method.
  • Finally, we print the minimum index by getting the minimum value of the array using the Math.min() method.

The below examples demonstrate this approach.

Example 1:



JavaScript




<script>
  // 1st function
  function hello() {
    var s = "";
    var ans = ["The", " hello fuction ", "takes "];
    for (var i = 0; i < 3; i++) s += ans[i];
    console.log(s);
  }
  
  // 2nd function
  function hello1() {
    var s = "";
    var ans = ["The hello1 fuction", " takes "];
    for (var i = 0; i < 2; i++) s += ans[i];
    console.log(s);
  }
  
  // 3rd function
  function hello2() {
    var ans = "The hello2 funtion takes ";
    for (var i = 0; i < 1; i++) console.log(ans);
  }
  
  // Function to check time required by each fuction
  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 funtion
    return end - start;
  }
  
  function findMinTime() {
  
    // Intializing array of functions
    var fun = [hello, hello1, hello2];
  
    // Initialising array of time taken by function
    var ans = [];
  
    // Iterating over all the fuctions 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>

Output:

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

Example 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 fuction
  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 funtion
    return end - start;
  }
  
  function findMinTime() {
  
    // Intializing array of functions
    var fun = [fac, fibo, binpow];
  
    // Initialising array of time
    // taken by function
    var ans = [];
  
    // Iterating over all the fuctions
    // 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>

Output:

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
My Personal Notes arrow_drop_up
Recommended Articles
Page :