net core VS goang web
2024-10-18 00:51:36
先前写过一篇文章: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的封装度更好,请求在进入业务逻辑前需要进行大量的处理。
以上仅为个人观点。
最新文章
- css 深入浅出定位
- CentOS 6.5系统安装配置LAMP(Apache+PHP5+MySQL)服务器环境
- Centos6安装Gitlab
- WNDR3700V4恢复原厂固件(使用TFTP刷网件原厂固件)
- [Redis]Redis 概述及基本使用规范.
- JavaScript学习总结 Ajax和Http状态字
- BIEEE 创建多维钻取分析(4)
- 30天,O2O速成攻略【7.19深圳站】
- JS,CSS,HTML制作网页首页,视频轮播,隐藏点击等等。
- 准备开始自己搞企业管理软件,从openerp入手
- UC全屏
- hdu 1402 A * B Problem Plus FFT
- java编程中的Java.Lang.Math类
- Bitmap工具类
- 视频编解码器,bbv 缓冲区溢出和下溢
- C++ Singleton (单例) 模式最优实现
- go语言打造个人博客系统(二)
- 爬虫之进阶 基于twisted实现自制简易scrapy框架(便于对scrapy源码的理解)
- Java核心技术卷一基础知识-第2章-Java程序设计环境-读书笔记
- Linux-centos7超过2TB使用parted命令分区
热门文章
- poj 1936 All in All(水题)
- Javabyte[]数组和十六进制String之间的转换Util------包含案例和代码
- 【剑指Offer学习】【面试题18 :树的子结构】
- 饭卡------HDOJ杭电2546(还是01背包!!!!!!)
- Easyui datagrid 批量编辑和提交
- Centos6.5快速配置可用网卡
- Ubuntu14.04 Y460闪屏问题解决方案
- DE1-SOC的sof文件无法下载解决办法
- QuartusII 中使用Modelsim对子程序进行仿真
- include与jsp:include区别