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倍!!!
有疑问加站长微信联系(非本文作者)