From 151e38d5c8d7dc99647b5f24379cd23a9e7b7290 Mon Sep 17 00:00:00 2001 From: kataras Date: Sat, 19 Aug 2017 07:11:30 +0300 Subject: [PATCH] .NET Core vs Iris MVC vs Iris (classic API with Handlers) No need to format using Writef on benchmarks for a simple string value without dynamic text, just use the WriteString which is the correct function for these apps. Former-commit-id: 896ec514570d533d8da91af3ad199fc4f823fe74 --- _benchmarks/README.md | 36 +++++++++--------- .../iris-mvc/controllers/values_controller.go | 2 +- _benchmarks/iris/main.go | 2 +- .../screens/500m_requests_iris-mvc.png | Bin 11467 -> 11783 bytes _benchmarks/screens/500m_requests_iris.png | Bin 11710 -> 11448 bytes .../screens/500m_requests_netcore-mvc.png | Bin 11621 -> 11659 bytes context/context.go | 1 - context/gzip_response_writer.go | 15 ++++++-- 8 files changed, 32 insertions(+), 24 deletions(-) diff --git a/_benchmarks/README.md b/_benchmarks/README.md index 814f2b55..da63113a 100644 --- a/_benchmarks/README.md +++ b/_benchmarks/README.md @@ -5,7 +5,7 @@ ## Software -* OS: Microsoft **Windows** [Version **10**.0.15063] +* OS: Microsoft **Windows** [Version **10**.0.15063], power plan is "High performance" * HTTP Benchmark Tool: https://github.com/codesenberg/bombardier, latest version **1.1** * **.NET Core**: https://www.microsoft.com/net/core, latest version **2.0** * **Iris**: https://github.com/kataras/iris, latest version **8.3** built with [go1.8.3](https://golang.org) @@ -25,15 +25,15 @@ Application started. Press Ctrl+C to shut down. ```bash $ bombardier -c 125 -n 5000000 http://localhost:5000/api/values/5 Bombarding http://localhost:5000/api/values/5 with 5000000 requests using 125 connections - 5000000 / 5000000 [====================================================================================] 100.00% 2m39s + 5000000 / 5000000 [=====================================================================================] 100.00% 2m8s Done! Statistics Avg Stdev Max - Reqs/sec 31532.63 10360.09 259792 - Latency 3.99ms 2.32ms 297.21ms + Reqs/sec 39311.56 11744.49 264000 + Latency 3.19ms 1.61ms 229.73ms HTTP codes: 1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 6.89MB/s + Throughput: 8.61MB/s ``` > 127210K Memory (private working set) @@ -48,17 +48,17 @@ Application started. Press CTRL+C to shut down. ```bash $ bombardier -c 125 -n 5000000 http://localhost:5000/api/values/5 Bombarding http://localhost:5000/api/values/5 with 5000000 requests using 125 connections - 5000000 / 5000000 [======================================================================================] 100.00% 58s + 5000000 / 5000000 [======================================================================================] 100.00% 47s Done! Statistics Avg Stdev Max - Reqs/sec 86087.86 3432.38 93833 - Latency 1.45ms 464.12us 42.53ms + Reqs/sec 105643.81 7687.79 122564 + Latency 1.18ms 366.55us 22.01ms HTTP codes: 1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 16.01MB/s + Throughput: 19.65MB/s ``` -> 11816K Memory (private working set) +> 126024K Memory (private working set) ### Iris ```bash @@ -71,17 +71,17 @@ Application started. Press CTRL+C to shut down. ```bash $ bombardier -c 125 -n 5000000 http://localhost:5000/api/values/5 Bombarding http://localhost:5000/api/values/5 with 5000000 requests using 125 connections - 5000000 / 5000000 [======================================================================================] 100.00% 48s + 5000000 / 5000000 [======================================================================================] 100.00% 45s Done! Statistics Avg Stdev Max - Reqs/sec 102987.54 8333.43 120069 - Latency 1.21ms 369.71us 23.52ms + Reqs/sec 110809.98 8209.87 128212 + Latency 1.13ms 307.86us 18.02ms HTTP codes: 1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 19.15MB/s + Throughput: 20.61MB/s ``` -> 11040K Memory (private working set) +> 11052K Memory (private working set) Click [here](screens) to navigate to the screenshots. @@ -94,8 +94,8 @@ Click [here](screens) to navigate to the screenshots. * Memory usage - smaller is better. * LOC (Lines Of Code) - smaller is better. -.NET Core MVC Application, written using 86 lines of code, ran for **2 minutes and 39 seconds** serving **31532.63** requests per second and **3.99ms** latency in average and **297.21ms** max, the memory usage of all these was 127MB (without the dotnet host). +.NET Core MVC Application, written using 86 lines of code, ran for **2 minutes and 8 seconds** serving **39311.56** requests per second within **3.19ms** latency in average and **229.73ms** max, the memory usage of all these was 126MB (without the dotnet host). -Iris MVC Application, written using 27 lines of code, ran for **58 seconds** serving **86087.86** requests per second and **1.45ms** latency in average and **42.53ms** max, the memory usage of all these was 12MB. +Iris MVC Application, written using 27 lines of code, ran for **47 seconds** serving **105643.71** requests per second within **1.18ms** latency in average and **22.01ms** max, the memory usage of all these was 12MB. -Iris Application, written using 22 lines of code, ran for **48 seconds** serving **102987.54** requests per second and **1.21ms** latency in average and **23.52ms** max, the memory usage of all these was 11MB. \ No newline at end of file +Iris Application, written using 22 lines of code, ran for **45 seconds** serving **110809.98** requests per second within **1.13ms** latency in average and **18.02ms** max, the memory usage of all these was 11MB. \ No newline at end of file diff --git a/_benchmarks/iris-mvc/controllers/values_controller.go b/_benchmarks/iris-mvc/controllers/values_controller.go index 229492a7..9b425848 100644 --- a/_benchmarks/iris-mvc/controllers/values_controller.go +++ b/_benchmarks/iris-mvc/controllers/values_controller.go @@ -11,7 +11,7 @@ type ValuesController struct { // Get handles "GET" requests to "api/values/{id}". func (vc *ValuesController) Get() { // id,_ := vc.Params.GetInt("id") - vc.Ctx.Writef("value") + vc.Ctx.WriteString("value") } // Put handles "PUT" requests to "api/values/{id}". diff --git a/_benchmarks/iris/main.go b/_benchmarks/iris/main.go index 2dee7991..e3f9847d 100644 --- a/_benchmarks/iris/main.go +++ b/_benchmarks/iris/main.go @@ -18,7 +18,7 @@ func main() { // getHandler handles "GET" requests to "api/values/{id}". func getHandler(ctx context.Context) { // id,_ := vc.Params.GetInt("id") - ctx.Writef("value") + ctx.WriteString("value") } // putHandler handles "PUT" requests to "api/values/{id}". diff --git a/_benchmarks/screens/500m_requests_iris-mvc.png b/_benchmarks/screens/500m_requests_iris-mvc.png index 7f75d52ba10b985e74756a2b5e759b86359fbdef..f2c6f8b800a0c4ea90c796173a4f283f9d9778ed 100644 GIT binary patch literal 11783 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 literal 11467 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 diff --git a/_benchmarks/screens/500m_requests_iris.png b/_benchmarks/screens/500m_requests_iris.png index bb6a25792d75cd7d66a7c894dfd4c77154428d33..e82f42fe0a36f781d34d8da5778dbfb04397b4d1 100644 GIT binary patch literal 11448 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 O$i2I|YPl*F0sjH_@jAl* diff --git a/_benchmarks/screens/500m_requests_netcore-mvc.png b/_benchmarks/screens/500m_requests_netcore-mvc.png index 13b92c94c338e18528df67a8d87c33755e08a378..6e10b9a887798855dfa8014e61a80ef0a26d0412 100644 GIT binary patch literal 11659 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