How to get the index of the function in an array of functions which executed the fastest in JavaScript?
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