我想测试GraphQL端点和RESTful端点的响应时间,因为我以前从未使用过GraphQL,因此我将在下一个Laravel项目中使用它。
因此,我正在使用Lighthouse PHP软件包通过Laravel应用程序提供GraphQL终结点,并且我还创建了一个RESTful终结点。
两个端点(GraphQL和RESTful)都旨在从我的本地数据库中获取所有用户(250个用户)。
因此,基于测试,我在这里注意到的是,当我在Postman
上测试这两个终结点时,RESTful终结点响应比GraphQL终结点更快。
我能知道为什么在两个端点都获取相同数据时GraphQL端点的响应比RESTful需要更多的时间吗?
GET请求的GraphQL端点结果(响应时间:88ms)
POST请求的GraphQL端点结果(响应时间:88ms)
RESTful端点结果(响应时间:44ms)
最佳答案
没有免费的午餐。
GraphQL提供了许多有用的功能,但是这些相同的功能总是会产生一些开销。尽管REST端点可以有效地从某个源中提取数据并将其重新分配给客户端,但即使对于相对较小的数据集,GraphQL也将不得不进行一些额外的处理来解析和验证响应中的每个字段。更不用说解析和验证请求本身所需的处理。而且,这种开销只会随着返回数据的大小而变得更大。
如果要向镜像GraphQL的REST端点引入其他功能(请求和响应验证,对部分响应的支持,对单个响应字段进行别名的能力等),您会发现两者之间的性能差距正在缩小。即使那样,尽管如此,它仍然还是苹果和橘子的比较,因为GraphQL服务将经历某些 Action ,仅仅是因为spec所说的。
关于laravel - 与RESTful相比,GraphQL GET响应时间慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56801991/