Nodejs:获得平均请求数

时间:2018-01-31 10:44:18

标签: javascript node.js

我需要向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);

    });

});

3 个答案:

答案 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的平均响应时间。