Digamos que tengo una función en Node
const my_function = async () => { await sub_function_1(); await sub_function_2(); await sub_function_3(); }Podría perfilar cuánto tiempo tarda my_function en ejecutarse con:
let t0 = new Date() await my_function() let t1 = new Date() let elapsed_ms = t1 - t0Pero eso no me mostraría cuánto tiempo tardó en ejecutarse cada una de las sub_funciones. De manera similar, agregaría un código de perfilado alrededor de cada una de las funciones secundarias, pero eso no me mostraría cuál de las funciones secundarias secundarias tardó más tiempo en ejecutarse.
¿Hay alguna manera, para una llamada de función determinada, de reunir todas las funciones esperadas debajo de esa llamada, junto con el tiempo que tardó en resolverse cada una?
¿Qué pasa con una función contenedora que toma una serie de funciones y las ejecuta secuencialmente?
//simulating a lengthy request const sub_function = (time) => {return new Promise((res,rej) => setTimeout( () => res(true),time ) )} const new_list = [ {handler:sub_function(90), alias:"sub_function_1"}, {handler:sub_function(150), alias:"sub_function_2"}, {handler:sub_function(350), alias:"sub_function_3"}, ] const calculate_max_time = async list =>{ const time_passed = [] for (const func of list) { const time = Date.now() await func.handler const time2 = Date.now() time_passed.push({alias:func.alias, value:time2 - time}) } const max_time = time_passed.reduce( (max,func) => max.value > func.value ? max : func) console.log(max_time) } calculate_max_time(new_list)