Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较

Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较

1、首先写一个Go语言的简单WEB程序,就返回一个HelloWord!

package main

import (
    f "fmt"
    "log"
    "net/http"
    //    "strings"
)

func sayhelloName(w http.ResponseWriter, r *http.Request) {
    //    r.ParseForm()
    //    f.Println(r.Form)
    //    f.Println("path", r.URL.Path)
    //    f.Println("scheme", r.URL.Scheme)
    //    f.Println(r.Form["url_long"])
    //    for k, v := range r.Form {
    //        f.Println("key:", k, "val:", strings.Join(v, "、"))
    //    }

    f.Fprintln(w, "hello world!")
}
func main() {
    http.HandleFunc("/", sayhelloName)
    err := http.ListenAndServe(":8080", nil)
    if err != nil {
        log.Fatal("ListenAndServe:", err)
    }
}

2、建一个Asp.net的Handler1.ashx的一般处理程序,并运行于IIS中。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace TESTWeb
{
    /// <summary>
    /// Handler1 的摘要说明
    /// </summary>
    public class Handler1 : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.Write("hello world!");
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}

3、用C#写一个控制台程序,用来模拟发起10000次请求时,速度比较:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;

namespace TESTSpeed
{
    class Program
    {
        static void Main(string[] args)
        {

            WebClient wc = new WebClient();
            DateTime dt1 = DateTime.Now;
            for (int i = 0; i < 10000; i++)
            {
                var result = wc.DownloadString("http://localhost:48563/handler1.ashx?t=" + DateTime.Now.Ticks);
            }
            DateTime dt2 = DateTime.Now;
            Console.WriteLine("Asp.net一般处理程序用时:" + (dt2 - dt1).TotalMilliseconds);

            WebClient wc2 = new WebClient();
            DateTime dt3 = DateTime.Now;
            for (int i = 0; i < 10000; i++)
            {
                var result = wc2.DownloadString("http://127.0.0.1:8080/?t=" + DateTime.Now.Ticks);
            }
            DateTime dt4 = DateTime.Now;
            Console.WriteLine("Go语言用时:" + (dt4 - dt3).TotalMilliseconds);
        }
    }
}

4、测试结果:

Go语言用时:811.0464ms

Asp.net一般处理程序:14017.8017ms

5、结论:Go不是一般的快!!!!相差了17倍!!!

时间: 2024-10-12 03:37:27

Go语言和ASP.NET的一般处理程序在处理WEB请求时的速度比较的相关文章

ASP.NET MVC API与JS进行POST请求时传递参数 -CHPowerljp原创

在API前添加    [HttpPost] 表示只允许POST方式请求 [HttpPost] public IHttpActionResult Get_BIGDATA([FromBody]Datas Datas) { try { return Json(Datas.rid); } catch (Exception e) { return Json("-1"); } } 要先通过POST方式读取到参数,需要在添加[FromBody]表示从key value键值对中读取参数 Datas 表

使用HTML语言和CSS开发商业站点(9)

#div_1 dl{ margin:0px;/*dl默认有外边距 跟ul一样*/ padding:0px; height:46px; margin-top:15px;} #div_1 dl dd{ margin:0px;/*dd默认有外边距*/ float:left; margin-left:10px; height:100%; line-height:46px; } 好的,使用HTML语言和CSS开发商业站点 就到这里结束    接下来是    使用Java实现面向对象编程 多多关注.评论,谢

C语言和OpenGL实现的24位色BMP解码器

我突然很喜欢发明轮子.. 早就想实现一下图片解码器和声音解码器. bmp的图片没有压缩,解码最简单,今天下午研究了一下bmp的编码,然后写了个24位色的解码器.(24位色的bmp没有调色板,8位和16位都有). 代码很简单,直接就能看懂,所以不说很多,直接贴了.. 1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include <stdio.h> 4 #include <Windows.h> 5 #include <gl/freeglut.h&g

C语言和PHP语法相异点

C语言和PHP语法相异点技术 maybe yes 发表于2015-02-05 16:09 原文链接 : http://blog.lmlphp.com/archives/80  来自 : LMLPHP后院 PHP 的语法规则和 C 语言语法规则非常的相似,PHP 中很多内部函数调用的就是原生的 C 语言函数.由于两种语言的运行方式不同,导致在某些情况下语法也有一些差异,下面列举几个. 获取全局变量方式不同 在作用域中获取全局变量的值,PHP 必须借助 global 关键字获取或者使用超全局变量 $

用Swift语言和Sprite Kit复制微信飞机大战游戏

先上GitHub链接: https://github.com/songrotek/PlaneWar.git 接下来稍微讲解一下! 这个程序还有点Bug,见谅! 1 说明 游戏采用了Sprite kit最新的Per pixel for physic 技术,就是直接使用texture纹理作为sprite的physics body . 游戏的texture.atlas从别的打飞机项目中拷之并辛苦地分解了. 游戏编写借鉴了网上的objc代码! 2 游戏编写过程 添加背景-> 添加控制的飞机-> 添加发

C语言和matlab

分别用C语言和matlab实现二分法查找数据 从形式上能够发现区别是,matlab是一句一句编译的,而c语言是对一个完整的代码段进行编译的,并且c中有头文件(#include(...)),而matlab中没有,对于数值运算matlab是很简便强大的,c就有点繁琐,对于算法要求c相对更高点. 具体例子如下: C语言 #define M 10 #include<stdio.h> void main(){ static int a[M]={-12,0,6,16,23,56,80,100,110,11

1000道C语言和C++语言的练习题及答案 #0000-0050

汇集1000道C语言和C++语言的练习题 (例题.笔试题.编程题.算法设计题),由我亲自配上答案(点此查看). 语法题我就不出了,那个没意思,看书就可以了. 本贴汇集50题 (0000-0050),持续更新... 0001. 抽签题 从10个数中随机抽取5个数.(相当于双色球抽签问题) 0002. 插入排序 已有10个按增序排列好的整数1,3,5,7,9,11,13,15,17,19.要求把一个整数n插到数组中,保持增序排列. 0003. 数学公式类计算题 已经圆柱体的底半径r,高h,求体积v.

&lt;密码的实现&gt;在C语言和C++中如何实现输入数字或字符的时候,在指令框中不显示您输入的内容,显示“*”

一开始我以为用C语言和C++不能实现使用者输入密码的时候显示出“*”呢!在制作网页的时候可以设置属性为“password”,就可以不显示使用者输入的内容了..没想到偶然的机会试出了用while循环结构可以实现.以下是C语言和C++的代码,供初学者参考. 这是C语言实现的代码: 1 #include <stdio.h> 2 #include <conio.h> 3 int main() 4 { 5 int c; 6 char str[100], *p = str; 7 while (

C语言和C++中动态申请内存

在C语言和C++的动态内存的使用方法是不同的,在C语言中要使用动态内存要包含一个头文件即 #include<malloc.h> 或者是#include<stdlib.h> 然后用C语言的系统函数 void * malloc(usigned size);来获得动态分配的内存,这个函数参数是需要申请的内存的字节数,返回的是一个申请到的内存的首地址,这个返回的内存的类型是 void ,所以需要根据需要进行强制类型转换,例如 int *array; array= (int *)malloc