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?

Improve Article
Save Article
Like Article
  • Last Updated : 15 Jul, 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 function 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 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>

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 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>

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 :

Start Your Coding Journey Now!