我创建了两个项目,一个使用nestJS / mongoDB,另一个使用Fastify / MongoDB,以便比较两个框架的性能。我做了一个简单的get资源API查询一个大约400Kb的mongo文件。两个项目路由响应超过300毫秒的JSON文档。有人可以向我解释额外的280毫秒,因为mongo响应不超过20毫秒。
这不是框架问题,他们都在同一时间做出回应。它是由API完成的压缩,是节点服务器所花费的时间
当我对代码进行概要分析时,mongo在两种情况下都会使用get处理程序立即返回的文档响应不超过20毫秒。没有样板代码或额外的日志记录,只有普通的HttpServer。
在Fastify我这样做
{
method: 'GET',
url: '/api/trees/:id',
handler: async (req, reply) => {
try {
const id = req.params.id
const tree = await TaxonomiesTrees.findById(id)
return tree.data
} catch (err) {
throw boom.boomify(err)
}
}
}
在这样的NestJS中
@Get(':id')
async getTree(@Param('id') code: string) {
const result = await this.treesCollection.findOne({id});
return result.data
}
我找到了对我的问题的回复,这似乎是某种逻辑。我怀疑它与网络服务器将控制器的结果解释成字节所花费的时间有关。称为TTBF,是从http请求到发送到客户端的第一个字节所花费的时间的度量。