Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

关于async/await和promise.all两种执行方式的速度快慢的问题

$
0
0

最近在做网站项目的时候,有这么一段代码:

 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毫秒,毫无疑问,第二种要更块一点,但是总觉得哪里还有问题,所以想请教一下各位,我这种测试的方式对么? 得出的结论是否靠谱?


Viewing all articles
Browse latest Browse all 14821

Trending Articles