Task: Calculate execution time of node(s)

n8n workflow:
{"nodes":[{"name":"Record start time","type":"n8n-nodes-base.function","position":[450,300],"parameters":{"functionCode":"items[0].json.start = new Date().getTime();\n\nreturn items;"},"typeVersion":1},{"name":"Calculate end time","type":"n8n-nodes-base.function","position":[880,300],"parameters":{"functionCode":"items[0].json.executionTime = new Date().getTime() -  $node['Record start time'].json.start;\n\nreturn items;\n"},"typeVersion":1},{"name":"Replace me","type":"n8n-nodes-base.noOp","notes":"Add any nodes between \"Record Start Time\" and \"Calculate end time\" nodes to calculate these nodes' execution time in ms ","position":[650,300],"parameters":{},"notesInFlow":true,"typeVersion":1},{"name":"Return execution time","type":"n8n-nodes-base.set","notes":"Returned in milliseconds ","position":[1080,300],"parameters":{"values":{"number":[],"string":[{"name":"execution time","value":"={{$node[\"Calculate end time\"].json[\"executionTime\"]}}"}]},"options":{},"keepOnlySet":true},"notesInFlow":true,"typeVersion":1}],"connections":{"Replace me":{"main":[[{"node":"Calculate end time","type":"main","index":0}]]},"Record start time":{"main":[[{"node":"Replace me","type":"main","index":0}]]},"Calculate end time":{"main":[[{"node":"Return execution time","type":"main","index":0}]]}}}