I have several complex sort functions that take parameters from other functions I want to write a timer function that will take a complex function with parameters, which call look smthng this:
timer(sortFunc1(arrayGenerator(COUNT), arg1...,))
timer(sortFunc2(arrayGenerator(COUNT), arg1...,))
...
timer(sortFunc10(arrayGenerator(COUNT), arg1...,))
but my timer function throw 'func is not a function':
function timer(func) {
let start = Date.now();
func();
console.log(Date.now() - start);
}
How I should write function timer to call it like way above?
I've tried reading articles about complex functions, returning a function from a function
You need to pass the function itself (without parentheses) and its arguments separately, and then use the apply
method to call the function with the provided arguments:
function timer(func, ...args) {
let start = Date.now();
func.apply(null, args);
console.log(Date.now() - start);
}
And this is how you use it:
timer(sortFunc1, arrayGenerator(COUNT), arg1, ...);
timer(sortFunc2, arrayGenerator(COUNT), arg1, ...);
// ...
timer(sortFunc10, arrayGenerator(COUNT), arg1, ...);