先前写过一篇文章:http://www.cnblogs.com/gengzhe/p/5557789.html,也是asp.net core和golang web的对比,热心的园友提出了几点问题,如下:

1、需要加入sleep来模拟实际业务,这样才能考验协程调度能力。

2、golang擅长的是多核环境。

于是今天修正了一下再次进行测试

CPU:E1230-v2

内存:16GB

操作系统:centos 7 (3核心2GB内存)

下面是代码:

go

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package main
 
import (
    "fmt"
    "net/http"
    "time"
)
 
func main() {
    fmt.Println("This is webserver base!")
 
    //第一个参数为客户端发起http请求时的接口名,第二个参数是一个func,负责处理这个请求。
    http.HandleFunc("/login", loginTask)
 
    //服务器要监听的主机地址和端口号
    err := http.ListenAndServe("192.168.199.236:8081", nil)
 
    if err != nil {
        fmt.Println("ListenAndServe error: ", err.Error())
    }
}
 
func loginTask(w http.ResponseWriter, req *http.Request) {
 
    //获取客户端通过GET/POST方式传递的参数
    time.Sleep(time.Millisecond*300)
    req.ParseForm()
    fmt.Fprint(w, "Hello Word!")
}

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class MyHandlerMiddleware
{
 
    // Must have constructor with this signature, otherwise exception at run time
    public MyHandlerMiddleware(RequestDelegate next)
    {
        // This is an HTTP Handler, so no need to store next
    }
 
    public async Task Invoke(HttpContext context)
    {
        await Task.Delay(1*300);
        await context.Response.WriteAsync("Hello World!");
    }
 
    // ...
}
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    }
 
    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app)
    {
        app.MapWhen(context => { return context.Request.Path.ToString().EndsWith("jjj.go"); }, ap =>
        {
            ap.UseMiddleware<MyHandlerMiddleware>();
        });
    }
}

测试结果(1000用户并发)

go

C#

 

测试结果确实是golang稍微好一点。

个人总结的差距有2点

1、go是静态编译,运行速度按理应该快一些。

2、.NET MVC的封装度更好,请求在进入业务逻辑前需要进行大量的处理。

以上仅为个人观点。

最新文章

  1. css 深入浅出定位
  2. CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境
  3. Centos6安装Gitlab
  4. WNDR3700V4恢复原厂固件(使用TFTP刷网件原厂固件)
  5. [Redis]Redis 概述及基本使用规范.
  6. JavaScript学习总结 Ajax和Http状态字
  7. BIEEE 创建多维钻取分析(4)
  8. 30天,O2O速成攻略【7.19深圳站】
  9. JS,CSS,HTML制作网页首页,视频轮播,隐藏点击等等。
  10. 准备开始自己搞企业管理软件,从openerp入手
  11. UC全屏
  12. hdu 1402 A * B Problem Plus FFT
  13. java编程中的Java.Lang.Math类
  14. Bitmap工具类
  15. 视频编解码器,bbv 缓冲区溢出和下溢
  16. C++ Singleton (单例) 模式最优实现
  17. go语言打造个人博客系统(二)
  18. 爬虫之进阶 基于twisted实现自制简易scrapy框架(便于对scrapy源码的理解)
  19. Java核心技术卷一基础知识-第2章-Java程序设计环境-读书笔记
  20. Linux-centos7超过2TB使用parted命令分区

热门文章

  1. poj 1936 All in All(水题)
  2. Javabyte[]数组和十六进制String之间的转换Util------包含案例和代码
  3. 【剑指Offer学习】【面试题18 :树的子结构】
  4. 饭卡------HDOJ杭电2546(还是01背包!!!!!!)
  5. Easyui datagrid 批量编辑和提交
  6. Centos6.5快速配置可用网卡
  7. Ubuntu14.04 Y460闪屏问题解决方案
  8. DE1-SOC的sof文件无法下载解决办法
  9. QuartusII 中使用Modelsim对子程序进行仿真
  10. include与jsp:include区别