Open In App

How to get the index of the function in an array of functions which executed the fastest in JavaScript ?

Last Updated : 30 Dec, 2022
Improve
Improve
Like Article
Like
Save
Share
Report

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

Example 1: In this example, we will calculate the time taken by each function to execute. We will then print the index of the fastest function. using the above-mentioned approach

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 "
0.10000000009313226
"The hello1 function takes "
0
"The hello2 function takes "
0
"Index of fastest function:"
1

Example 2: In this example, we will calculate the time taken by functions to perform some mathematical operations. We will then print the index of the fastest function.

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 = 0;
        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: 24
0.30000001192092896
6th fibonacci no is: 5
0.20000001788139343
Power 2 to 22 mod 1e9+7 is: 221047735
0.30000001192092896
Index of fastest function: 1


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads