最近在做网站项目的时候,有这么一段代码:
topic.author = await User.findById(topic.author_id); //读取作者信息
topic.authorTopicList = await Topic.find({ // 读取作者其它主题
author_id: topic.author_id,
deleted: false
}, 'title', {
sort: '-create_time',
limit: 10
});
今天在看代码的时候,忽然想到这两个查询是可以同时查询的,于是就有了下面一种方式
[topic.author, topic.authorTopicList] = await Promise.all([
User.findById(topic.author_id), // 读取主题作者
Topic.find({ // 读取作者其它主题
author_id: topic.author_id,
deleted: false
}, 'title', {
sort: '-create_time',
limit: 10
})
]);
写完之后就纠结了,这两种方式无疑第一种看起来更清晰明了,但是两种方式那种快呢? 于是我就做了这样的测试
let start = Date.now();
for(let i = 0; i < 1000; i++) {
// 这里分别写上两种查询后执行
}
console.log(Date.now() - start);
最后得到的结果,第一种方式最快的时候是 1328毫秒,第二种方式最快的时候是945毫秒,毫无疑问,第二种要更块一点,但是总觉得哪里还有问题,所以想请教一下各位,我这种测试的方式对么? 得出的结论是否靠谱?