我想测量在google云功能上运行的特定代码块的执行时间(用于firebase写入事件)。谁能告诉我怎么做。
是否没有专门的工具来衡量执行时间。
我编码了2个代码。所以,我想知道哪些代码具有更好的执行时间,从而提供更好的性能。
我尝试在以下代码中使用process.hrtime(),但它会为相同的数据产生不同的结果。
* Algo 1跑步时间299661890
Algo 1跑步时间5684236
Algo 1跑步时间10185061 *
开始时间[87,594147806] 'Algo 1跑步时间9251749'
开始时间[22,803098325] 'Algo 1运行时间1498176261'
// Import the Firebase SDK for Google Cloud Functions.
var functions = require('firebase-functions');
var t0
var mymap= new Map();
exports.processData=functions.database.ref("/test").onWrite(event=>{
const dataValue = event.data.child('data').val()
dataValue.body = myFuction(dataValue.body)
const promise = event.data.ref.child('data').set(dataValue)
'
//Finish Time
t1=process.hrtime(t0)
var RunTime=Math.round((t1[0]*1000000000) + (t1[1]));
console.log("Algo 1 Running time "+RunTime)
return promise;
}
})
function myFunction(s){
// start time
t0=process.hrtime()
var newValue=0
myProbdict.forEach(mapElements);
function mapElements(value, key, map) {
if(newValue< 68){
reduction+=parseInt(value)
var regexstring ="\\b"+`${key}`+"\\b"
var regexp = new RegExp(regexstring, "gi");
s= s.replace(regexp,"#")
}
}
return dataValue
}
答案 0 :(得分:1)
你不能期望有一个恒定的执行时间。执行函数所需的时间总是不同的,因为它取决于当前的网络状态(可能还有当前的服务器使用情况)。
我在this blog post找到了一个很好的例子。博客作者编写了一个应该在1ms内执行的函数:
var start = new Date();
var hrstart = process.hrtime();
setTimeout(function (argument) {
// execution time simulated with setTimeout function
var end = new Date() - start,
hrend = process.hrtime(hrstart);
console.info("Execution time: %dms", end);
console.info("Execution time (hr): %ds %dms", hrend[0], hrend[1]/1000000);
}, 1);
在第一次执行时,他得到了预期的结果:
Execution time: 1ms
Execution time (hr): 0s 1.025075ms
但是在第二次执行时,该函数花了不到1ms:
Execution time: 3ms
Execution time (hr): 0s 2.875302ms
如果您需要知道代码块的执行时间,您可以获取这些输出并计算平均值:(29961890 + 5684236 + 10185061)÷3,这将产生类似于15277062的内容。