diff --git a/README.md b/README.md index e5655639..839da658 100644 --- a/README.md +++ b/README.md @@ -22,9 +22,9 @@ $ go get -u github.com/kataras/iris Iris takes advantage of the [vendor directory](https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo) feature. You get truly reproducible builds, as this method guards against upstream renames and deletes. -[![Iris vs .NET Core(C#) vs Node.js (Express)](https://iris-go.com/images/benchmark-new-gray.png)](_benchmarks/README_UNIX.md) +[![Iris vs .NET Core(C#) vs Node.js (Express)](_benchmarks/benchmarks_graph_22_october_2018_gray.png)](_benchmarks/README.md) -_Updated at: [Tuesday, 21 November 2017](_benchmarks/README_UNIX.md)_ +_Updated at: [Monday, 22 October 2018](_benchmarks/README.md)_
Benchmarks from third-party source over the rest web frameworks diff --git a/_benchmarks/README.md b/_benchmarks/README.md index 04ee836f..d595c98b 100644 --- a/_benchmarks/README.md +++ b/_benchmarks/README.md @@ -1,14 +1,55 @@ +# Benchmarks: Monday, 22 October 2018 + +![](benchmarks_graph_22_october_2018.png) + ## Hardware -* Processor: Intel(R) Core(TM) **i7-4710HQ** CPU @ 2.50GHz 2.50GHz -* RAM: **8.00 GB** +![hardware screen](screens/hardware_win.png) ## Software -* 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) +* OS: Microsoft **Windows 10** [Version 1803 (OS Build 17134.345)] +* HTTP Benchmark Tool: https://github.com/codesenberg/bombardier, latest version **1.2.0** +* **Iris [Go]**: https://github.com/kataras/iris, latest version **11.0.0** built with [go1.11.1](https://golang.org) +* **.NET Core (both Kestrel & MVC) [C#]**: https://www.microsoft.com/net/core, latest version **2.1.5** +* **Node.js (express + throng) [Javascript]**: https://nodejs.org/, latest version **10.12.0**, express: https://github.com/expressjs/express latest version **4.16.4** and [throng](https://www.npmjs.com/package/throng) latest version **4.0.0** + +## Results + +* Throughput - `how much data transferred per second`. +* Reqs/sec (Requests Per Second in Average) - `the highest the better, important`. +* Latency - `the smallest the better, important`. +* Time To Complete - `the smallest the better, important`. + +| Name | Throughput | Reqs/sec | Latency | Time To Complete | Total Requests | +|-------|:-----------|:--------|:-------------|---------|------| +| Iris | 24.41MB/s | **131268** | **0.95ms** | **7s** | 1000000 | +| .NET Core (Kestrel) | 19.95MB/s | 110150 | 1.13ms | 9s | 1000000 | +| Expressjs| 18.60MB/s | 70352 | 1.80ms | 14s | 1000000 | +| Iris with Sessions | 25.32MB/s | **82477** | **1.53ms** | **1m1s** | 5000000 | +| .NET Core (Kestrel) with Sessions | 28.45MB/s | 61946 | 2.06ms | 1m1s | 5000000 | +| Expressjs with Sessions | 12.81MB/s | 46962 | 2.53mss | 1m42s | 5000000 | +| Iris MVC | 21.27MB/s | **114378** | **1.09ms** | **43s** | 5000000 | +| .Net Core MVC | 18.19MB/s | 82608 | 1.51ms | 1m | 5000000 | +| Expressjs MVC | - | - | - | - | - | +| Iris MVC with Templates | 306.60MB/s | **42501** | **2.94ms** | **23s** | 1000000 | +| .Net Core MVC with Templates | 188.01MB/s | 26051 | 4.78ms | 38s | 1000000 | +| Expressjs MVC with Templates | - | - | - | - | - | + +Go ahead and read the rest of the page to learn how you can reproduce the benchmarks. Don't be afraid! It's actually very easy, you can do things like that as well! + +## Old results (August of 2017) + + **Go vs .NET Core in terms of HTTP performance (Sa, 19 August 2017)** + +- https://medium.com/@kataras/go-vs-net-core-in-terms-of-http-performance-7535a61b67b8 +- https://dev.to/kataras/go-vsnet-core-in-terms-of-http-performance + +**Iris Go vs .NET Core Kestrel in terms of HTTP performance (Mo, 21 August 2017)** + +- https://medium.com/@kataras/iris-go-vs-net-core-kestrel-in-terms-of-http-performance-806195dc93d5 + +**Thank you all** for the 100% green feedback, have fun! # .NET Core MVC vs Iris MVC @@ -22,7 +63,7 @@ We will compare two identical things here, in terms of application, the expected ```bash $ cd netcore-mvc -$ dotnet run -c Release +$ dotnet run --urls=http://localhost:5000 -c Release Hosting environment: Production Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore-mvc Now listening on: http://localhost:5000 @@ -31,16 +72,16 @@ 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% 2m3s +Bombarding http://localhost:5000/api/values/5 with 5000000 request(s) using 125 connection(s) + 5000000 / 5000000 [=====================================================================================] 100.00% 1m0s Done! Statistics Avg Stdev Max - Reqs/sec 40226.03 8724.30 161919 - Latency 3.09ms 1.40ms 169.12ms + Reqs/sec 82608.44 4072.64 96896.66 + Latency 1.51ms 255.49us 235.36ms HTTP codes: 1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 8.91MB/s + Throughput: 18.19MB/s ``` ### Iris MVC @@ -54,16 +95,16 @@ 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% 47s +Bombarding http://localhost:5000/api/values/5 with 5000000 request(s) using 125 connection(s) + 5000000 / 5000000 [======================================================================================] 100.00% 43s Done! Statistics Avg Stdev Max - Reqs/sec 105643.81 7687.79 122564 - Latency 1.18ms 366.55us 22.01ms + Reqs/sec 114378.40 5080.77 135410.87 + Latency 1.09ms 26.25us 19.92ms HTTP codes: 1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 19.65MB/s + Throughput: 21.27MB/s ``` Click [here](screens) to navigate to the screenshots. @@ -77,17 +118,15 @@ 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 3 seconds** serving **40226.03** requests per second within **3.09ms** latency in average and **169.12ms** max, the memory usage of all these was ~123MB (without the dotnet host). +.NET Core MVC Application, written using 86 lines of code, ran for **1 minute** serving **82608.44** requests per second within **1.51ms** latency in average and **235.36ms** max, the memory usage of all these was ~123MB (without the dotnet host). -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 MVC Application, written using 27 lines of code, ran for **43 seconds** serving **114378.40** requests per second within **1.09ms** latency in average and **19.92ms** max, the memory usage of all these was ~12MB. -#### Update: 20 August 2017 +#### Update: 20 August 2017 and benchmarks re-ran at 22 October 2018 As [Josh Clark](https://twitter.com/clarkis117) and [Scott Hanselman‏](https://twitter.com/shanselman)‏ pointed out [on this status](https://twitter.com/shanselman/status/899005786826788865), on .NET Core MVC `Startup.cs` file the line with `services.AddMvc();` can be replaced with `services.AddMvcCore();`. I followed their helpful instructions and re-run the benchmarks. The article now contains the latest benchmark output for the .NET Core application with the change both Josh and Scott noted. -The twitter conversion: https://twitter.com/MakisMaropoulos/status/899113215895982080 - -For those who want to compare with the standard services.AddMvc(); you can see the old output by pressing [here](screens/5m_requests_netcore-mvc.png). +The twitter conversation: https://twitter.com/MakisMaropoulos/status/899113215895982080 ## MVC + Templates @@ -97,7 +136,7 @@ Let’s run one more benchmark, spawn `1000000 requests` but this time we expect ```bash $ cd netcore-mvc-templates -$ dotnet run -c Release +$ dotnet run --urls=http://localhost:5000 -c Release Hosting environment: Production Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore-mvc-templates Now listening on: http://localhost:5000 @@ -106,16 +145,16 @@ Application started. Press Ctrl+C to shut down. ```bash $ bombardier -c 125 -n 1000000 http://localhost:5000 -Bombarding http://localhost:5000 with 1000000 requests using 125 connections - 1000000 / 1000000 [=====================================================================================] 100.00% 1m20s +Bombarding http://localhost:5000 with 1000000 request(s) using 125 connection(s) + 1000000 / 1000000 [======================================================================================] 100.00% 38s Done! Statistics Avg Stdev Max - Reqs/sec 11738.60 7741.36 125887 - Latency 10.10ms 22.10ms 1.97s + Reqs/sec 26051.53 3256.67 42363.32 + Latency 4.78ms 0.93ms 417.39ms HTTP codes: 1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 89.03MB/s + Throughput: 188.01MB/s ``` ### Iris MVC with Templates @@ -129,34 +168,26 @@ Application started. Press CTRL+C to shut down. ```bash $ bombardier -c 125 -n 1000000 http://localhost:5000 -Bombarding http://localhost:5000 with 1000000 requests using 125 connections - 1000000 / 1000000 [======================================================================================] 100.00% 37s +Bombarding http://localhost:5000 with 1000000 request(s) using 125 connection(s) + 1000000 / 1000000 [======================================================================================] 100.00% 23s Done! Statistics Avg Stdev Max - Reqs/sec 26656.76 1944.73 31188 - Latency 4.69ms 1.20ms 22.52ms + Reqs/sec 42501.30 1604.82 46023.80 + Latency 2.94ms 81.93us 24.93ms HTTP codes: 1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 192.51MB/s + Throughput: 306.60MB/s ``` ### Summary -* Time to complete the `1000000 requests` - smaller is better. -* Reqs/sec - bigger is better. -* Latency - smaller is better -* Memory usage - smaller is better. -* Throughput - bigger is better. +.NET Core MVC with Templates Application ran for **38 seconds** serving **26051.53** requests per second with **188.01MB/s** within **4.78ms** latency in average and **417.39ms** max, the memory usage of all these was ~193MB (without the dotnet host). -.NET Core MVC with Templates Application ran for **1 minute and 20 seconds** serving **11738.60** requests per second with **89.03MB/s** within **10.10ms** latency in average and **1.97s** max, the memory usage of all these was ~193MB (without the dotnet host). - -Iris MVC with Templates Application ran for **37 seconds** serving **26656.76** requests per second with **192.51MB/s** within **1.18ms** latency in average and **22.52ms** max, the memory usage of all these was ~17MB. +Iris MVC with Templates Application ran for **23 seconds** serving **42501.30** requests per second with **306.60MB/s** within **2.94ms** latency in average and **24.93ms** max, the memory usage of all these was ~17MB. # .NET Core (Kestrel) vs Iris -_Monday, 21 August 2017_ - This time we will compare the speed of the “low-level” .NET Core’s server implementation named Kestrel and Iris’ “low-level” handlers, we will test two simple applications, the first will be the same as our previous application but written using handlers and the second test will contain a single route which sets and gets a session value(string) based on a key(string). ## Simple @@ -167,7 +198,7 @@ Spawn `1000000 requests` with 125 different "threads", targeting to a dynamic re ```bash $ cd netcore -$ dotnet run -c Release +$ dotnet run --urls=http://localhost:5000 -c Release Hosting environment: Production Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore Now listening on: http://localhost:5000 @@ -176,16 +207,16 @@ Application started. Press Ctrl+C to shut down. ```bash $ bombardier -c 125 -n 1000000 http://localhost:5000/api/values/5 -Bombarding http://localhost:5000/api/values/5 with 1000000 requests using 125 connections - 1000000 / 1000000 [======================================================================================] 100.00% 10s +Bombarding http://localhost:5000/api/values/5 with 1000000 request(s) using 125 connection(s) + 1000000 / 1000000 [=======================================================================================] 100.00% 9s Done! Statistics Avg Stdev Max - Reqs/sec 97884.57 8699.94 110509 - Latency 1.28ms 682.63us 61.04ms + Reqs/sec 110150.12 8195.73 122486.03 + Latency 1.13ms 178.98us 81.78ms HTTP codes: 1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 17.73MB/s + Throughput: 19.95MB/s ``` ### Iris @@ -199,22 +230,22 @@ Application started. Press CTRL+C to shut down. ```bash $ bombardier -c 125 -n 1000000 http://localhost:5000/api/values/5 -Bombarding http://localhost:5000/api/values/5 with 1000000 requests using 125 connections - 1000000 / 1000000 [=======================================================================================] 100.00% 8s +Bombarding http://localhost:5000/api/values/5 with 1000000 request(s) using 125 connection(s) + 1000000 / 1000000 [=======================================================================================] 100.00% 7s Done! Statistics Avg Stdev Max - Reqs/sec 117917.79 4437.04 125614 - Latency 1.06ms 278.12us 19.03ms + Reqs/sec 131268.51 5757.43 141530.72 + Latency 0.95ms 62.10us 19.92ms HTTP codes: 1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 21.93MB/s + Throughput: 24.41MB/s ``` ### Node.js (Express) ```bash -$ cd expressjs +$ cd expressjs-throng $ npm install $ node app.js Now listening on: http://localhost:5000 @@ -223,31 +254,25 @@ Application started. Press CTRL+C to shut down. ```bash $ bombardier -c 125 -n 1000000 http://localhost:5000/api/values/5 -Bombarding http://localhost:5000/api/values/5 with 1000000 requests using 125 connections - 1000000 / 1000000 [=======================================================================================] 100.00% 1m25s +Bombarding http://localhost:5000/api/values/5 with 1000000 request(s) using 125 connection(s) + 1000000 / 1000000 [======================================================================================] 100.00% 14s Done! Statistics Avg Stdev Max - Reqs/sec 11665.30 628.41 21978 - Latency 10.72ms 1.45ms 112.10ms + Reqs/sec 70352.00 10947.26 115334.47 + Latency 1.80ms 1.39ms 206.45ms HTTP codes: 1xx - 0, 2xx - 1000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 3.14MB/s + Throughput: 18.60MB/s ``` ### Summary -* Time to complete the `1000000 requests` - smaller is better. -* Reqs/sec - bigger is better. -* Latency - smaller is better -* Throughput - bigger is better. -* LOC (Lines Of Code) - smaller is better. +.NET Core (Kestrel) Application written using **63 code of lines** ran for **9 seconds** serving **110150.12** requests per second with **19.95MB/s** within **1.13ms** latency in average and **81.78ms** max. -.NET Core (Kestrel) Application written using **63 code of lines** ran for **10 seconds** serving **97884.57** requests per second with **17.73MB/s** within **1.28ms** latency in average and **61.04ms** max. +Iris Application written using **14 code of lines** ran for **7 seconds** serving **131268.51** requests per second with **24.41MB/s** within **0.95ms** latency in average and **19.92ms** max. -Iris Application written using **14 code of lines** ran for **8 seconds** serving **117917.79** requests per second with **21.93MB/s** within **1.06ms** latency in average and **19.03ms** max. - -Node.js (Express) Application written using **12 code of lines** ran for **1 minute and 25 seconds** serving **11665.30** requests per second with **3.14MB/s** within **10.72ms** latency in average and **112.10ms** max. +Node.js (Express) Application written using **12 code of lines** ran for **14 seconds** serving **70352** requests per second with **18.60MB/s** within **1.80ms** latency in average and **206.45ms** max. ## Sessions @@ -257,7 +282,7 @@ Spawn `5000000 requests` with 125 different "threads" targeting a static request ```bash $ cd netcore-sessions -$ dotnet run -c Release +$ dotnet run --urls=http://localhost:5000 -c Release Hosting environment: Production Content root path: C:\mygopath\src\github.com\kataras\iris\_benchmarks\netcore-sessions Now listening on: http://localhost:5000 @@ -266,16 +291,16 @@ Application started. Press Ctrl+C to shut down. ```bash $ bombardier -c 125 -n 5000000 http://localhost:5000/setget -Bombarding http://localhost:5000/setget with 5000000 requests using 125 connections - 5000000 / 5000000 [====================================================================================] 100.00% 2m40s +Bombarding http://localhost:5000/setget with 5000000 request(s) using 125 connection(s) + 5000000 / 5000000 [=====================================================================================] 100.00% 1m1s Done! Statistics Avg Stdev Max - Reqs/sec 31844.77 13856.19 253746 - Latency 4.02ms 15.57ms 0.96s + Reqs/sec 61946.59 13164.30 100166.94 + Latency 2.06ms 2.42ms 781.91ms HTTP codes: 1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 14.51MB/s + Throughput: 28.45MB/s ``` ### Iris with Sessions @@ -289,22 +314,22 @@ Application started. Press CTRL+C to shut down. ```bash $ bombardier -c 125 -n 5000000 http://localhost:5000/setget -Bombarding http://localhost:5000/setget with 5000000 requests using 125 connections - 5000000 / 5000000 [====================================================================================] 100.00% 1m15s +Bombarding http://localhost:5000/setget with 5000000 request(s) using 125 connection(s) + 5000000 / 5000000 [=====================================================================================] 100.00% 1m1s Done! Statistics Avg Stdev Max - Reqs/sec 66749.70 32110.67 110445 - Latency 1.88ms 9.13ms 1.94s + Reqs/sec 82477.76 29886.37 166399.36 + Latency 1.53ms 462.79us 286.23ms HTTP codes: 1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 20.65MB/s + Throughput: 25.32MB/s ``` ### Node.js (Express) with Sessions ```bash -$ cd expressjs-sessions +$ cd expressjs-throng-sessions $ npm install $ node app.js Now listening on: http://localhost:5000 @@ -313,42 +338,24 @@ Application started. Press CTRL+C to shut down. ```bash $ bombardier -c 125 -n 5000000 http://localhost:5000/setget -Bombarding http://localhost:5000/setget with 5000000 requests using 125 connections - 5000000 / 5000000 [====================================================================================] 100.00% 15m47s +Bombarding http://localhost:5000/setget with 5000000 request(s) using 125 connection(s) + 5000000 / 5000000 [====================================================================================] 100.00% 1m42s Done! Statistics Avg Stdev Max - Reqs/sec 5634.27 2317.30 9945 - Latency 22.17ms 8.19ms 119.08ms + Reqs/sec 46962.17 10028.21 104302.48 + Latency 2.53ms 1.45ms 368.01ms HTTP codes: 1xx - 0, 2xx - 5000000, 3xx - 0, 4xx - 0, 5xx - 0 others - 0 - Throughput: 1.48MB/s + Throughput: 12.81MB/s ``` ### Summary -* Time to complete the `5000000 requests` - smaller is better. -* Reqs/sec - bigger is better. -* Latency - smaller is better -* Throughput - bigger is better. +.NET Core with Sessions Application ran for **1 minute and 1 second** serving **61946.59** requests per second with **28.45MB/s** within **2.06ms** latency in average and **781.91ms** max. -.NET Core with Sessions Application ran for **2 minutes and 40 seconds** serving **31844.77** requests per second with **14.51MB/s** within **4.02ms** latency in average and **0.96s** max. +Iris with Sessions Application ran for **1 minute and 1 second** serving **82477.76** requests per second with **25.32MB/s** within **1.53ms** latency in average and **286.23ms** max. -Iris with Sessions Application ran for **1 minute and 15 seconds** serving **66749.70** requests per second with **20.65MB/s** within **1.88ms** latency in average and **1.94s** max. +Node.js (Express) with Sessions Application ran for **1 minute and 42 seconds** serving **46962.17** requests per second with **12.81MB/s** within **2.53ms** latency in average and **368.01ms** max. -Node.js (Express) with Sessions Application ran for **15 minutes and 47 seconds** serving **5634.27** requests per second with **1.48MB/s** within **22.17ms** latency in average and **119.08ms** max. - -> Click [here](screens) to navigate to the screenshots. - -### Articles - - **Go vs .NET Core in terms of HTTP performance (Sa, 19 August 2017)** - -- https://medium.com/@kataras/go-vs-net-core-in-terms-of-http-performance-7535a61b67b8 -- https://dev.to/kataras/go-vsnet-core-in-terms-of-http-performance - -**Iris Go vs .NET Core Kestrel in terms of HTTP performance (Mo, 21 August 2017)** - -- https://medium.com/@kataras/iris-go-vs-net-core-kestrel-in-terms-of-http-performance-806195dc93d5 - -**Thank you all** for the 100% green feedback, have fun! \ No newline at end of file +> Click [here](screens) to navigate to the screenshots. \ No newline at end of file diff --git a/_benchmarks/README_UNIX.md b/_benchmarks/README_UNIX.md deleted file mode 100644 index a7e87d2c..00000000 --- a/_benchmarks/README_UNIX.md +++ /dev/null @@ -1,61 +0,0 @@ -![Iris vs .NET Core(C#) vs Node.js (Express)](https://iris-go.com/images/benchmark-new.png)] - -## Hardware - -* [Processor](screens/unix/system_info_cpu.png): Intel(R) Core(TM) **i7-4710HQ** CPU @ 2.50GHz -* [RAM](screens/unix/system_info_ram.png): **8.00 GB** - -## Software - -* OS: Linux **Ubuntu** [Version **17.10**] with latest kernel version **4.14.0-041400-generic x86_64 GNU/Linux** -* HTTP Benchmark Tool: https://github.com/codesenberg/bombardier, latest version **1.1** -* **Iris [Go]**: https://github.com/kataras/iris, latest version **8.5.7** built with [go1.9.2](https://golang.org) -* **.NET Core [C#]**: https://www.microsoft.com/net/core, latest version **2.0.2** -* **Node.js (express + throng) [Javascript]**: https://nodejs.org/, latest version **9.2.0**, express: https://github.com/expressjs/express latest version **4.16.0** and [throng](https://www.npmjs.com/package/throng) latest version **4.0.0** - -Go ahead to the [README.md](README.md) and read how you can reproduce the benchmarks. Don't be scary it's actually very easy, you can do these things as well! - -## Results - -* Throughput - `bigger is better`. -* Reqs/sec (Requests Per Second in Average) - `bigger is better`. -* Latency - `smaller is better`. -* Time To Complete - `smaller is better`. -* Total Requests in this fortune are all 1 million, in order to be easier to do the graph later on. - -### Native - -| Name | Throughput | Reqs/sec | Latency | Time To Complete | Total Requests | -|-------|:-----------|:--------|:-------------|---------|------| -| Iris | **29.31MB/s** | 157628 | 791.58us | 6s | 1000000 | -| Kestrel | **25.28MB/s** | 139642 | 0.89ms | 7s | 1000000 | -| Node.js | **13.69MB/s** | 50907 | 2.45ms | 19s | 1000000 | -| Iris with Sessions | **22.37MB/s** | 71922 | 1.74ms | 14s | 1000000 | -| Kestrel with Sessions | **14.51MB/s** | 31102 | 4.02ms | 32s | 1000000 | -| Node.js with Sessions | **5.08MB/s** | 19358 | 6.48ms | 51s | 1000000 | - -> each test has its own screenshot, click [here](screens/unix) to explore - -### MVC (Model View Controller) - -| Name | Throughput | Reqs/sec | Latency | Time To Complete | Total Requests | -|-------|:-----------|:--------|:-------------|---------|------| -| Iris MVC | **26.39MB/s** | 141868 | 0.88ms | 7s | 1000000 | -| .Net Core MVC | **11.99MB/s** | 54418 | 2.30ms | 18s | 1000000 | -| - | - | - | - | - | - | -| Iris MVC with Templates | **136.58MB/s** | 18933 | 6.60ms | 52s | 1000000 | -| .Net Core MVC with Templates | **88.95MB/s** | 12347 | 10.12ms | 1m21s | 1000000 | -| - | - | - | - | - | - | - -> nodejs express does not contain any MVC features - -### Updates - -- 21 November 2017: initial run and publish - -## Articles (ms windows OS) - -- https://hackernoon.com/go-vs-net-core-in-terms-of-http-performance-7535a61b67b8 -- https://hackernoon.com/iris-go-vs-net-core-kestrel-in-terms-of-http-performance-806195dc93d5 - -**Thank you all** for the 100% green feedback, have fun! \ No newline at end of file diff --git a/_benchmarks/benchmarks_graph_22_october_2018.png b/_benchmarks/benchmarks_graph_22_october_2018.png new file mode 100644 index 00000000..3a4c9f1e Binary files /dev/null and b/_benchmarks/benchmarks_graph_22_october_2018.png differ diff --git a/_benchmarks/benchmarks_graph_22_october_2018_gray.png b/_benchmarks/benchmarks_graph_22_october_2018_gray.png new file mode 100644 index 00000000..c2028168 Binary files /dev/null and b/_benchmarks/benchmarks_graph_22_october_2018_gray.png differ diff --git a/_benchmarks/expressjs-throng-sessions/package-lock.json b/_benchmarks/expressjs-throng-sessions/package-lock.json index cec4bda5..1de893ae 100644 --- a/_benchmarks/expressjs-throng-sessions/package-lock.json +++ b/_benchmarks/expressjs-throng-sessions/package-lock.json @@ -1,15 +1,15 @@ { "name": "expressjs-app", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "2.1.17", + "mime-types": "~2.1.18", "negotiator": "0.6.1" } }, @@ -19,20 +19,20 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "requires": { "bytes": "3.0.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.1", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.15" + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" } }, "bytes": { @@ -41,9 +41,9 @@ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" }, "clone": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.3.tgz", - "integrity": "sha1-KY1+IjFmD0DAA8LtMUDezz9TCF8=" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" }, "content-disposition": { "version": "0.5.2", @@ -79,9 +79,9 @@ } }, "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "destroy": { "version": "1.0.4", @@ -94,9 +94,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "escape-html": { "version": "1.0.3", @@ -109,40 +109,40 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "express": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.0.tgz", - "integrity": "sha1-tRljjk61jnF4yBtJjvIveYyy4lU=", + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", "requires": { - "accepts": "1.3.4", + "accepts": "~1.3.5", "array-flatten": "1.1.1", - "body-parser": "1.18.2", + "body-parser": "1.18.3", "content-disposition": "0.5.2", - "content-type": "1.0.4", + "content-type": "~1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.1", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.1.0", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.2", - "qs": "6.5.1", - "range-parser": "1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.0", - "serve-static": "1.13.0", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "1.3.1", - "type-is": "1.6.15", + "statuses": "~1.4.0", + "type-is": "~1.6.16", "utils-merge": "1.0.1", - "vary": "1.1.2" + "vary": "~1.1.2" } }, "express-session": { @@ -154,25 +154,25 @@ "cookie-signature": "1.0.6", "crc": "3.4.4", "debug": "2.6.9", - "depd": "1.1.1", - "on-headers": "1.0.1", - "parseurl": "1.3.2", - "uid-safe": "2.1.5", + "depd": "~1.1.1", + "on-headers": "~1.0.1", + "parseurl": "~1.3.2", + "uid-safe": "~2.1.5", "utils-merge": "1.0.1" } }, "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "requires": { "debug": "2.6.9", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" } }, "forwarded": { @@ -186,27 +186,23 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "1.1.1", + "depd": "~1.1.2", "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - }, - "dependencies": { - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" - } + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" } }, "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } }, "inherits": { "version": "2.0.3", @@ -214,13 +210,13 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ipaddr.js": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", - "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" }, "lodash": { "version": "2.4.2", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", + "resolved": "http://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=" }, "lodash.defaults": { @@ -230,7 +226,7 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "merge-descriptors": { @@ -249,16 +245,16 @@ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.37.0" } }, "ms": { @@ -276,14 +272,14 @@ "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-3.2.1.tgz", "integrity": "sha1-p5WNMqikLZEZziWYZWfqLF+WZ3M=", "requires": { - "clone": "1.0.3", - "lodash": "4.17.4" + "clone": "1.0.x", + "lodash": "4.x" }, "dependencies": { "lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=" + "version": "4.17.11", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" } } }, @@ -311,18 +307,18 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "proxy-addr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", - "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", "requires": { - "forwarded": "0.1.2", - "ipaddr.js": "1.5.2" + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" } }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "random-bytes": { "version": "1.0.0", @@ -335,50 +331,55 @@ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" }, "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", "requires": { "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", "unpipe": "1.0.0" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "send": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.0.tgz", - "integrity": "sha1-FjONu5ou3krVe0hCDsO4LY6ApXs=", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "1.1.1", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.6.2", + "http-errors": "~1.6.2", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" } }, "serve-static": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.0.tgz", - "integrity": "sha1-gQyR24AOlLoofq5rTgbKq5/cFvE=", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.16.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" } }, "session-memory-store": { @@ -386,8 +387,8 @@ "resolved": "https://registry.npmjs.org/session-memory-store/-/session-memory-store-0.2.2.tgz", "integrity": "sha1-1GQ48oTPjg7RVE9v1Zk+4Ud8dlY=", "requires": { - "lodash": "2.4.2", - "node-cache": "3.2.1" + "lodash": "^2.4.2", + "node-cache": "^3.1.0" } }, "setprototypeof": { @@ -396,25 +397,25 @@ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" }, "throng": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/throng/-/throng-4.0.0.tgz", "integrity": "sha1-mDxroZk7WOroWZmKpof/6I34TBc=", "requires": { - "lodash.defaults": "4.2.0" + "lodash.defaults": "^4.0.1" } }, "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "~2.1.18" } }, "uid-safe": { @@ -422,7 +423,7 @@ "resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz", "integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==", "requires": { - "random-bytes": "1.0.0" + "random-bytes": "~1.0.0" } }, "unpipe": { diff --git a/_benchmarks/expressjs-throng-sessions/package.json b/_benchmarks/expressjs-throng-sessions/package.json index b8e257bc..d99d23cc 100644 --- a/_benchmarks/expressjs-throng-sessions/package.json +++ b/_benchmarks/expressjs-throng-sessions/package.json @@ -1,6 +1,6 @@ { "name": "expressjs-app", - "version": "1.0.0", + "version": "1.0.1", "description": "", "main": "app.js", "scripts": { @@ -9,7 +9,7 @@ "author": "Gerasimos (Makis) Maropoulos ", "license": "ISC", "dependencies": { - "express": "^4.16.0", + "express": "^4.16.4", "express-session": "^1.15.6", "session-memory-store": "^0.2.2", "throng": "4.0.0" diff --git a/_benchmarks/expressjs-throng/package-lock.json b/_benchmarks/expressjs-throng/package-lock.json index 6747dc5e..ca2ae8b0 100644 --- a/_benchmarks/expressjs-throng/package-lock.json +++ b/_benchmarks/expressjs-throng/package-lock.json @@ -1,15 +1,15 @@ { "name": "expressjs-app", - "version": "1.0.0", + "version": "1.0.1", "lockfileVersion": 1, "requires": true, "dependencies": { "accepts": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", - "integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.5.tgz", + "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=", "requires": { - "mime-types": "2.1.17", + "mime-types": "~2.1.18", "negotiator": "0.6.1" } }, @@ -19,20 +19,20 @@ "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, "body-parser": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", - "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.3.tgz", + "integrity": "sha1-WykhmP/dVTs6DyDe0FkrlWlVyLQ=", "requires": { "bytes": "3.0.0", - "content-type": "1.0.4", + "content-type": "~1.0.4", "debug": "2.6.9", - "depd": "1.1.1", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", - "on-finished": "2.3.0", - "qs": "6.5.1", - "raw-body": "2.3.2", - "type-is": "1.6.15" + "depd": "~1.1.2", + "http-errors": "~1.6.3", + "iconv-lite": "0.4.23", + "on-finished": "~2.3.0", + "qs": "6.5.2", + "raw-body": "2.3.3", + "type-is": "~1.6.16" } }, "bytes": { @@ -69,9 +69,9 @@ } }, "depd": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", - "integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "destroy": { "version": "1.0.4", @@ -84,9 +84,9 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" }, "encodeurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.1.tgz", - "integrity": "sha1-eePVhlU0aQn+bw9Fpd5oEDspTSA=" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "escape-html": { "version": "1.0.3", @@ -99,54 +99,54 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" }, "express": { - "version": "4.16.0", - "resolved": "https://registry.npmjs.org/express/-/express-4.16.0.tgz", - "integrity": "sha1-tRljjk61jnF4yBtJjvIveYyy4lU=", + "version": "4.16.4", + "resolved": "https://registry.npmjs.org/express/-/express-4.16.4.tgz", + "integrity": "sha512-j12Uuyb4FMrd/qQAm6uCHAkPtO8FDTRJZBDd5D2KOL2eLaz1yUNdUB/NOIyq0iU4q4cFarsUCrnFDPBcnksuOg==", "requires": { - "accepts": "1.3.4", + "accepts": "~1.3.5", "array-flatten": "1.1.1", - "body-parser": "1.18.2", + "body-parser": "1.18.3", "content-disposition": "0.5.2", - "content-type": "1.0.4", + "content-type": "~1.0.4", "cookie": "0.3.1", "cookie-signature": "1.0.6", "debug": "2.6.9", - "depd": "1.1.1", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", - "finalhandler": "1.1.0", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.1.1", "fresh": "0.5.2", "merge-descriptors": "1.0.1", - "methods": "1.1.2", - "on-finished": "2.3.0", - "parseurl": "1.3.2", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", "path-to-regexp": "0.1.7", - "proxy-addr": "2.0.2", - "qs": "6.5.1", - "range-parser": "1.2.0", - "safe-buffer": "5.1.1", - "send": "0.16.0", - "serve-static": "1.13.0", + "proxy-addr": "~2.0.4", + "qs": "6.5.2", + "range-parser": "~1.2.0", + "safe-buffer": "5.1.2", + "send": "0.16.2", + "serve-static": "1.13.2", "setprototypeof": "1.1.0", - "statuses": "1.3.1", - "type-is": "1.6.15", + "statuses": "~1.4.0", + "type-is": "~1.6.16", "utils-merge": "1.0.1", - "vary": "1.1.2" + "vary": "~1.1.2" } }, "finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", + "version": "1.1.1", + "resolved": "http://registry.npmjs.org/finalhandler/-/finalhandler-1.1.1.tgz", + "integrity": "sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg==", "requires": { "debug": "2.6.9", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "on-finished": "2.3.0", - "parseurl": "1.3.2", - "statuses": "1.3.1", - "unpipe": "1.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.4.0", + "unpipe": "~1.0.0" } }, "forwarded": { @@ -160,27 +160,23 @@ "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, "http-errors": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", - "integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", + "version": "1.6.3", + "resolved": "http://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", "requires": { - "depd": "1.1.1", + "depd": "~1.1.2", "inherits": "2.0.3", - "setprototypeof": "1.0.3", - "statuses": "1.3.1" - }, - "dependencies": { - "setprototypeof": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", - "integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" - } + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" } }, "iconv-lite": { - "version": "0.4.19", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.23.tgz", + "integrity": "sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } }, "inherits": { "version": "2.0.3", @@ -188,9 +184,9 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "ipaddr.js": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", - "integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=" + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.8.0.tgz", + "integrity": "sha1-6qM9bd16zo9/b+DJygRA5wZzix4=" }, "lodash.defaults": { "version": "4.2.0", @@ -199,7 +195,7 @@ }, "media-typer": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "resolved": "http://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" }, "merge-descriptors": { @@ -218,16 +214,16 @@ "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" }, "mime-db": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", - "integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" + "version": "1.37.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.37.0.tgz", + "integrity": "sha512-R3C4db6bgQhlIhPU48fUtdVmKnflq+hRdad7IyKhtFj06VPNVdk2RhiYL3UjQIlso8L+YxAtFkobT0VK+S/ybg==" }, "mime-types": { - "version": "2.1.17", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", - "integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", + "version": "2.1.21", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.21.tgz", + "integrity": "sha512-3iL6DbwpyLzjR3xHSFNFeb9Nz/M8WDkX33t1GFQnFOllWk8pOrh/LSrB5OXlnlW5P9LH73X6loW/eogc+F5lJg==", "requires": { - "mime-db": "1.30.0" + "mime-db": "~1.37.0" } }, "ms": { @@ -259,18 +255,18 @@ "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "proxy-addr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", - "integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.4.tgz", + "integrity": "sha512-5erio2h9jp5CHGwcybmxmVqHmnCBZeewlfJ0pex+UW7Qny7OOZXTtH56TGNyBizkgiOwhJtMKrVzDTeKcySZwA==", "requires": { - "forwarded": "0.1.2", - "ipaddr.js": "1.5.2" + "forwarded": "~0.1.2", + "ipaddr.js": "1.8.0" } }, "qs": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", - "integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" }, "range-parser": { "version": "1.2.0", @@ -278,50 +274,55 @@ "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" }, "raw-body": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", - "integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.3.tgz", + "integrity": "sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw==", "requires": { "bytes": "3.0.0", - "http-errors": "1.6.2", - "iconv-lite": "0.4.19", + "http-errors": "1.6.3", + "iconv-lite": "0.4.23", "unpipe": "1.0.0" } }, "safe-buffer": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "send": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.16.0.tgz", - "integrity": "sha1-FjONu5ou3krVe0hCDsO4LY6ApXs=", + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", "requires": { "debug": "2.6.9", - "depd": "1.1.1", - "destroy": "1.0.4", - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "etag": "1.8.1", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", "fresh": "0.5.2", - "http-errors": "1.6.2", + "http-errors": "~1.6.2", "mime": "1.4.1", "ms": "2.0.0", - "on-finished": "2.3.0", - "range-parser": "1.2.0", - "statuses": "1.3.1" + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" } }, "serve-static": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.0.tgz", - "integrity": "sha1-gQyR24AOlLoofq5rTgbKq5/cFvE=", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", "requires": { - "encodeurl": "1.0.1", - "escape-html": "1.0.3", - "parseurl": "1.3.2", - "send": "0.16.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" } }, "setprototypeof": { @@ -330,25 +331,25 @@ "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" }, "statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==" }, "throng": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/throng/-/throng-4.0.0.tgz", "integrity": "sha1-mDxroZk7WOroWZmKpof/6I34TBc=", "requires": { - "lodash.defaults": "4.2.0" + "lodash.defaults": "^4.0.1" } }, "type-is": { - "version": "1.6.15", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", - "integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", + "version": "1.6.16", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.16.tgz", + "integrity": "sha512-HRkVv/5qY2G6I8iab9cI7v1bOIdhm94dVjQCPFElW9W+3GeDOSHmy2EBYe4VTApuzolPcmgFTN3ftVJRKR2J9Q==", "requires": { "media-typer": "0.3.0", - "mime-types": "2.1.17" + "mime-types": "~2.1.18" } }, "unpipe": { diff --git a/_benchmarks/expressjs-throng/package.json b/_benchmarks/expressjs-throng/package.json index c5f53166..b1d2430a 100644 --- a/_benchmarks/expressjs-throng/package.json +++ b/_benchmarks/expressjs-throng/package.json @@ -1,6 +1,6 @@ { "name": "expressjs-app", - "version": "1.0.0", + "version": "1.0.1", "description": "", "main": "app.js", "scripts": { @@ -9,7 +9,7 @@ "author": "Gerasimos (Makis) Maropoulos ", "license": "ISC", "dependencies": { - "express": "^4.16.0", + "express": "^4.16.4", "throng": "4.0.0" } } diff --git a/_benchmarks/netcore-mvc-templates/netcore-mvc-templates.csproj b/_benchmarks/netcore-mvc-templates/netcore-mvc-templates.csproj index 74c7d770..dde6ee07 100644 --- a/_benchmarks/netcore-mvc-templates/netcore-mvc-templates.csproj +++ b/_benchmarks/netcore-mvc-templates/netcore-mvc-templates.csproj @@ -1,15 +1,15 @@ - netcoreapp2.0 + netcoreapp2.1 - + - + diff --git a/_benchmarks/netcore-mvc/netcore-mvc.csproj b/_benchmarks/netcore-mvc/netcore-mvc.csproj index e071cdd5..0e7f839d 100644 --- a/_benchmarks/netcore-mvc/netcore-mvc.csproj +++ b/_benchmarks/netcore-mvc/netcore-mvc.csproj @@ -1,7 +1,7 @@ - netcoreapp2.0 + netcoreapp2.1 @@ -9,11 +9,12 @@ - + + - + - + diff --git a/_benchmarks/netcore-sessions/netcore-sessions.csproj b/_benchmarks/netcore-sessions/netcore-sessions.csproj index 74c7d770..dde6ee07 100644 --- a/_benchmarks/netcore-sessions/netcore-sessions.csproj +++ b/_benchmarks/netcore-sessions/netcore-sessions.csproj @@ -1,15 +1,15 @@ - netcoreapp2.0 + netcoreapp2.1 - + - + diff --git a/_benchmarks/netcore/netcore.csproj b/_benchmarks/netcore/netcore.csproj index 74c7d770..dde6ee07 100644 --- a/_benchmarks/netcore/netcore.csproj +++ b/_benchmarks/netcore/netcore.csproj @@ -1,15 +1,15 @@ - netcoreapp2.0 + netcoreapp2.1 - + - + diff --git a/_benchmarks/screens/1m_requests_expressjs.png b/_benchmarks/screens/1m_requests_expressjs.png index 7d0603e0..941e38f8 100644 Binary files a/_benchmarks/screens/1m_requests_expressjs.png and b/_benchmarks/screens/1m_requests_expressjs.png differ diff --git a/_benchmarks/screens/1m_requests_iris-mvc-templates.png b/_benchmarks/screens/1m_requests_iris-mvc-templates.png index 28a23cbf..e94a174c 100644 Binary files a/_benchmarks/screens/1m_requests_iris-mvc-templates.png and b/_benchmarks/screens/1m_requests_iris-mvc-templates.png differ diff --git a/_benchmarks/screens/1m_requests_iris.png b/_benchmarks/screens/1m_requests_iris.png index 78617a9a..b4931f72 100644 Binary files a/_benchmarks/screens/1m_requests_iris.png and b/_benchmarks/screens/1m_requests_iris.png differ diff --git a/_benchmarks/screens/1m_requests_netcore-mvc-templates.png b/_benchmarks/screens/1m_requests_netcore-mvc-templates.png index 46c48672..324c20d2 100644 Binary files a/_benchmarks/screens/1m_requests_netcore-mvc-templates.png and b/_benchmarks/screens/1m_requests_netcore-mvc-templates.png differ diff --git a/_benchmarks/screens/1m_requests_netcore.png b/_benchmarks/screens/1m_requests_netcore.png index 7e36b7ef..697c2d6a 100644 Binary files a/_benchmarks/screens/1m_requests_netcore.png and b/_benchmarks/screens/1m_requests_netcore.png differ diff --git a/_benchmarks/screens/5m_requests_express-sessions.png b/_benchmarks/screens/5m_requests_express-sessions.png new file mode 100644 index 00000000..22886a15 Binary files /dev/null and b/_benchmarks/screens/5m_requests_express-sessions.png differ diff --git a/_benchmarks/screens/5m_requests_iris-mvc.png b/_benchmarks/screens/5m_requests_iris-mvc.png index f2c6f8b8..af94071e 100644 Binary files a/_benchmarks/screens/5m_requests_iris-mvc.png and b/_benchmarks/screens/5m_requests_iris-mvc.png differ diff --git a/_benchmarks/screens/5m_requests_iris-sessions.png b/_benchmarks/screens/5m_requests_iris-sessions.png index 8da528a5..a96f0ac3 100644 Binary files a/_benchmarks/screens/5m_requests_iris-sessions.png and b/_benchmarks/screens/5m_requests_iris-sessions.png differ diff --git a/_benchmarks/screens/5m_requests_iris.png b/_benchmarks/screens/5m_requests_iris.png deleted file mode 100644 index e82f42fe..00000000 Binary files a/_benchmarks/screens/5m_requests_iris.png and /dev/null differ diff --git a/_benchmarks/screens/5m_requests_netcore-mvc.png b/_benchmarks/screens/5m_requests_netcore-mvc.png index 6e10b9a8..71e5a070 100644 Binary files a/_benchmarks/screens/5m_requests_netcore-mvc.png and b/_benchmarks/screens/5m_requests_netcore-mvc.png differ diff --git a/_benchmarks/screens/5m_requests_netcore-mvc_addmvccore.png b/_benchmarks/screens/5m_requests_netcore-mvc_addmvccore.png deleted file mode 100644 index a752d9c4..00000000 Binary files a/_benchmarks/screens/5m_requests_netcore-mvc_addmvccore.png and /dev/null differ diff --git a/_benchmarks/screens/5m_requests_netcore-sessions.png b/_benchmarks/screens/5m_requests_netcore-sessions.png index 6baeebb3..3df3c063 100644 Binary files a/_benchmarks/screens/5m_requests_netcore-sessions.png and b/_benchmarks/screens/5m_requests_netcore-sessions.png differ diff --git a/_benchmarks/screens/hardware_win.png b/_benchmarks/screens/hardware_win.png new file mode 100644 index 00000000..f035a126 Binary files /dev/null and b/_benchmarks/screens/hardware_win.png differ diff --git a/_benchmarks/screens/unix/system_info_cpu.png b/_benchmarks/screens/unix/system_info_cpu.png deleted file mode 100644 index df91e815..00000000 Binary files a/_benchmarks/screens/unix/system_info_cpu.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_1m_requests_expressjs-throng-sessions.png b/_benchmarks/screens/unix/unix_1m_requests_expressjs-throng-sessions.png deleted file mode 100644 index 28d925c1..00000000 Binary files a/_benchmarks/screens/unix/unix_1m_requests_expressjs-throng-sessions.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_1m_requests_expressjs-throng.png b/_benchmarks/screens/unix/unix_1m_requests_expressjs-throng.png deleted file mode 100644 index ee0d3262..00000000 Binary files a/_benchmarks/screens/unix/unix_1m_requests_expressjs-throng.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_1m_requests_iris-mvc-templates.png b/_benchmarks/screens/unix/unix_1m_requests_iris-mvc-templates.png deleted file mode 100644 index 94b5e000..00000000 Binary files a/_benchmarks/screens/unix/unix_1m_requests_iris-mvc-templates.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_1m_requests_iris-mvc.png b/_benchmarks/screens/unix/unix_1m_requests_iris-mvc.png deleted file mode 100644 index b4573e07..00000000 Binary files a/_benchmarks/screens/unix/unix_1m_requests_iris-mvc.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_1m_requests_iris-sessions.png b/_benchmarks/screens/unix/unix_1m_requests_iris-sessions.png deleted file mode 100644 index 66e15cf6..00000000 Binary files a/_benchmarks/screens/unix/unix_1m_requests_iris-sessions.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_1m_requests_iris.png b/_benchmarks/screens/unix/unix_1m_requests_iris.png deleted file mode 100644 index 4fcd203e..00000000 Binary files a/_benchmarks/screens/unix/unix_1m_requests_iris.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_1m_requests_netcore-mvc-templates.png b/_benchmarks/screens/unix/unix_1m_requests_netcore-mvc-templates.png deleted file mode 100644 index 1b27bc7d..00000000 Binary files a/_benchmarks/screens/unix/unix_1m_requests_netcore-mvc-templates.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_1m_requests_netcore-mvc.png b/_benchmarks/screens/unix/unix_1m_requests_netcore-mvc.png deleted file mode 100644 index 8066799a..00000000 Binary files a/_benchmarks/screens/unix/unix_1m_requests_netcore-mvc.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_1m_requests_netcore-sessions.png b/_benchmarks/screens/unix/unix_1m_requests_netcore-sessions.png deleted file mode 100644 index 88fd2944..00000000 Binary files a/_benchmarks/screens/unix/unix_1m_requests_netcore-sessions.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_1m_requests_netcore.png b/_benchmarks/screens/unix/unix_1m_requests_netcore.png deleted file mode 100644 index a3c017cf..00000000 Binary files a/_benchmarks/screens/unix/unix_1m_requests_netcore.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_5m_requests_expressjs-throng-sessions.png b/_benchmarks/screens/unix/unix_5m_requests_expressjs-throng-sessions.png deleted file mode 100644 index 15a72bce..00000000 Binary files a/_benchmarks/screens/unix/unix_5m_requests_expressjs-throng-sessions.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_5m_requests_iris-mvc.png b/_benchmarks/screens/unix/unix_5m_requests_iris-mvc.png deleted file mode 100644 index 3f6a0a54..00000000 Binary files a/_benchmarks/screens/unix/unix_5m_requests_iris-mvc.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_5m_requests_iris-sessions.png b/_benchmarks/screens/unix/unix_5m_requests_iris-sessions.png deleted file mode 100644 index f57a6b9c..00000000 Binary files a/_benchmarks/screens/unix/unix_5m_requests_iris-sessions.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_5m_requests_netcore-mvc.png b/_benchmarks/screens/unix/unix_5m_requests_netcore-mvc.png deleted file mode 100644 index 9378a677..00000000 Binary files a/_benchmarks/screens/unix/unix_5m_requests_netcore-mvc.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_5m_requests_netcore-sessions.png b/_benchmarks/screens/unix/unix_5m_requests_netcore-sessions.png deleted file mode 100644 index 6fb0614a..00000000 Binary files a/_benchmarks/screens/unix/unix_5m_requests_netcore-sessions.png and /dev/null differ diff --git a/_benchmarks/screens/unix/unix_system_info_ram.png b/_benchmarks/screens/unix/unix_system_info_ram.png deleted file mode 100644 index fedfd7bd..00000000 Binary files a/_benchmarks/screens/unix/unix_system_info_ram.png and /dev/null differ