我正在尝试将称为备忘录的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
我在这里错误地测试了速度吗?我的方法有哪些缺陷?也许我最初的假设是错误的?
答案 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。