我的性能测试正确吗?记忆存储与Node.js中的正常RAM存储

时间:2019-06-09 00:20:17

标签: node.js performance-testing

我正在尝试将称为备忘录的https://github.com/PaquitoSoft/memored库的读取性能与Node.js中的常规旧RAM变量进行比较

我希望在读取数据方面,使用备忘录存储的数据至少比RAM存储稍慢,但结果却相反。 (有关我的输出,请阅读下文)

我正在Windows 10的Visual Studio Code终端中运行此程序。所有这些操作均在Typescript中完成,稍后将其编译为JS,然后使用“ node”命令运行。

这是我的RAM测试

var normalRAM = {
    firstname: 'qwe',
    lastname: 'fsa'
}

var s = process.hrtime(); //start timer
console.log(normalRAM); // read from ram
var e = process.hrtime(s) //stop timer

console.log("end0", e[0]);  //results in seconds
console.log("end1", e[1]);  //results in nanoseconds

这是我的记忆测试

// clustering needed to show memored in action
if (cluster.isMaster)
{
    // Fork workers.
    for (let i = 0; i < 1; i++)
    {
        cluster.fork();
    }
}
else
{
    var han = {
        firstname: 'Han',
        lastname: 'Solo'
    }

    // Store and read
    memored.store('character1', han, function ()
    {
        console.log('Value stored!');
        var hrstart = process.hrtime(); // start timer
        memored.read('character1', function (err: any, value: any)
        {
            var hrend = process.hrtime(hrstart) // stop timer
            console.log('Read value:', value);

            console.log("hrend0", hrend[0]); //results in seconds
            console.log("hrend1", hrend[1]); //results in nanoseconds

        });
    });
}

结果:

The RAM read speeds are around 6500000 nanoseconds.

The Memored read speeds are around 1000000 nanoseconds

我在这里错误地测试了速度吗?我的方法有哪些缺陷?也许我最初的假设是错误的?

1 个答案:

答案 0 :(得分:0)

我切换了以下两行:

var hrend = process.hrtime(hrstart) // stop timer
console.log('Read value:', value);

对此:

console.log('Read value:', value);
var hrend = process.hrtime(hrstart) // stop timer

在实际情况下这更有意义,因为无论如何在返回数据之后我都需要从RAM读取它。我的问题的答案可能是“您记忆中的测试执行得更快,因为它仅在返回数据供我的回调使用时才进行测试,而不是在我实际从'value'变量中读取数据时进行测试”。

我要在有人阅读之前删除我的问题(甚至可能吗?),但如果有人犯了这样愚蠢的错误,我会把它留在这里:D。