今天无聊又翻出了一篇很久以前golang和.net测试的文章(原文),
非常好奇7、8年过去了,golang和.net 有啥变革吗?
于是我在电脑上又测了一遍。
我的电脑是win10系统,.net sdk都下了最新的版本,重新安装了一编,golang用的是go1.24.1。
好了,各位大佬来看看测试结果吧
.NET个版本测试结果:
gin和iris框架测试结果:
- 完成 5000000 个请求的时间 - 越短越好。
- 请求次数/每秒 - 越大越好。
- 等待时间 — 越短越好。
- 内存使用 — 越小越好。
- 吞吐量 — 越大越好。
.NET 代码:
NET5.0、6.0、7.0:
- using Microsoft.AspNetCore.Mvc;
- namespace _5.Controllers
- {
- // ValuesController is the equivalent
- // `ValuesController` of the Iris 8.3 mvc application.
- [Route("api/[controller]")]
- public class ValuesController : ControllerBase
- {
- // Get handles "GET" requests to "api/values/{id}".
- [HttpGet("{id}")]
- public string Get(int id)
- {
- return "value";
- }
- // Put handles "PUT" requests to "api/values/{id}".
- [HttpPut("{id}")]
- public void Put(int id, [FromBody] string value)
- {
- }
- // Delete handles "DELETE" requests to "api/values/{id}".
- [HttpDelete("{id}")]
- public void Delete(int id)
- {
- }
- }
- }
复制代码
NET8.0、9.0、10.0:
- app.MapGet("/api/values/{id}", (int id) =>
- {
- return "value";
- })
- .WithName("GetApi")
- .WithOpenApi();
复制代码
Gin 代码:
- package main
- import (
- "github.com/gin-gonic/gin"
- "io/ioutil"
- )
- func main() {
- gin.SetMode(gin.ReleaseMode)
- gin.DefaultWriter = ioutil.Discard
- r := gin.Default()
- r.GET("/api/values/:id", func(c *gin.Context) {
- c.String(200, "value")
- })
- r.Run() // 监听并在 0.0.0.0:8080 上启动服务
- }
复制代码
iris 代码:
- package main
- import "github.com/kataras/iris/v12"
- func main() {
- app := iris.New()
- booksAPI := app.Party("/api")
- {
- booksAPI.Use(iris.Compression)
- booksAPI.Get("/values/{id}", Get)
- }
- app.Listen(":8080")
- }
- func Get(ctx iris.Context) {
- // id,_ := vc.Params.GetInt("id")
- ctx.WriteString("value")
- }
复制代码
电脑配置:
- CPU:7840H
- 内存:32.0 GB
- 网卡:AX210
- 操作系统: Windows 10 22H2 专业版
参考地点:
https://linux.cn/article-8935-1-rel.html
https://hackernoon.com/go-vs-net-core-in-terms-of-http-performance-7535a61b67b8
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |