我需要向GROUP BY
发送X请求,其中X是我程序的参数。我设法获得一个请求的延迟,但现在需要计算多个请求的平均时间(以毫秒为单位)。我有一个数组responseTimes[]
,我想存储响应时间。如何添加多个响应时间并获得平均值?有帮助吗?我是否需要首先使用setTimeout函数?
我使用节点v8.9.4,如果fetchURL不适合你。
这是代码
var fetchUrl = require("fetch").fetchUrl;
fetchUrl("http://date.jsontest.com", function(error, meta, body){
const start = new Date();
const responseTimes = [];
let count = 0;
setTimeout(function (argument) {
// execution time simulated with setTimeout function
var end = new Date() - start;
console.log("Execution time: %dms", end);
});
});
答案 0 :(得分:0)
如果您正在存储responseTime [],那么您可以存储请求数。因此,在任何时间点,您都可以通过以下函数获得平均值 -
function getAvg(timeArr, count){
let sum = 0;
for(let i=0; i<timeArr.length; i++){
sum += timeArr[i];
}
return sum/count;
}
此外,没有必要存储responseTime []。您只需计算每个请求的平均值,并仅存储平均值和计数。如果您只需要平均值。
var fetchUrl = require("fetch").fetchUrl;
let responseTime = [];
let count = 0;
fetchUrl("http://date.jsontest.com", function(error, meta, body){
const start = new Date();
const requests = [];
let count = 0;
setTimeout(function (argument) {
// execution time simulated with setTimeout function
var end = new Date() - start;
console.log("Execution time: %dms", end);
responseTime.push(end);
count++;
let averageNow = getAvg(responseTime, count);
console.log(averageNow);// this is your average
});
});
答案 1 :(得分:0)
您需要将start
变量放在请求之外。
var fetchUrl = require("fetch").fetchUrl;
var start = new Date();
fetchUrl("http://date.jsontest.com", function(error, meta, body){
const requests = [];
let count = 0;
// execution time simulated with setTimeout function
var end = new Date() - start;
console.log("Execution time: %dms", end);
});
答案 2 :(得分:0)
您可以使用Artillery npm模块获取API的平均响应时间。