Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
a889a9f0b8 | |||
71fc44acc5 | |||
36cd9266b3 | |||
21ff0825cc | |||
c7cdd65f87 | |||
3b2adea40f |
@ -9,7 +9,7 @@ We'll be comparing the read performance of 6 Web APIs frameworks, sharing the sa
|
||||
{{< /lead >}}
|
||||
|
||||
{{< alert >}}
|
||||
Update April 2024 for PHP: I replaced previous Apache results by new [FrankenPHP](https://frankenphp.dev/). Now PHP is back in the game, with huge performance increase thanks to worker mode.
|
||||
Outdated post, check the [lastest]({{< ref "/posts/23-web-api-benchmarks-2025" >}}) for updated benchs.
|
||||
{{< /alert >}}
|
||||
|
||||
This is not a basic synthetic benchmark, but a real world benchmark with DB data tests, and multiple scenarios. This post may be updated when new versions of frameworks will be released or any suggestions for performance related improvement in below commentary section.
|
||||
|
@ -12,10 +12,10 @@ This is a 2025 update from previous [2024 benchmark]({{< ref "/posts/22-web-api-
|
||||
|
||||
| Framework & Source code | Runtime | ORM |
|
||||
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | -------------- |
|
||||
| [Laravel 11](https://github.com/adr1enbe4udou1n/laravel-realworld-example-app) ([api](https://laravelrealworld.okami101.io/api/) / [image](https://gitea.okami101.io/conduit/-/packages/container/laravel/latest)) | FrankenPHP 8.4 | Eloquent |
|
||||
| [Laravel 12](https://github.com/adr1enbe4udou1n/laravel-realworld-example-app) ([api](https://laravelrealworld.okami101.io/api/) / [image](https://gitea.okami101.io/conduit/-/packages/container/laravel/latest)) | FrankenPHP 8.4 | Eloquent |
|
||||
| [Symfony 7.2](https://github.com/adr1enbe4udou1n/symfony-realworld-example-app) ([api](https://symfonyrealworld.okami101.io/api/) / [image](https://gitea.okami101.io/conduit/-/packages/container/symfony/latest)) | FrankenPHP 8.4 | Doctrine |
|
||||
| [FastAPI](https://github.com/adr1enbe4udou1n/fastapi-realworld-example-app) ([api](https://fastapirealworld.okami101.io/api/) / [image](https://gitea.okami101.io/conduit/-/packages/container/fastapi/latest)) | Python 3.13 (asyncio) | SQLAlchemy 2.0 (asyncio) |
|
||||
| [NestJS 10](https://github.com/adr1enbe4udou1n/nestjs-realworld-example-app) ([api](https://nestjsrealworld.okami101.io/api/) / [image](https://gitea.okami101.io/conduit/-/packages/container/nestjs/latest)) | Node 22 | Prisma 6 |
|
||||
| [NestJS 11](https://github.com/adr1enbe4udou1n/nestjs-realworld-example-app) ([api](https://nestjsrealworld.okami101.io/api/) / [image](https://gitea.okami101.io/conduit/-/packages/container/nestjs/latest)) | Node 22 | Prisma 6 |
|
||||
| [Spring Boot 3.4](https://github.com/adr1enbe4udou1n/spring-boot-realworld-example-app) ([api](https://springbootrealworld.okami101.io/api/) / [image](https://gitea.okami101.io/conduit/-/packages/container/spring-boot/latest)) | Java 21 | Hibernate 6 |
|
||||
| [ASP.NET Core 9](https://github.com/adr1enbe4udou1n/aspnetcore-realworld-example-app) ([api](https://aspnetcorerealworld.okami101.io/api/) / [image](https://gitea.okami101.io/conduit/-/packages/container/aspnet-core/latest)) | .NET 9.0 | EF Core 9 |
|
||||
|
||||
@ -158,7 +158,7 @@ services:
|
||||
- traefik.http.services.fastapi.loadbalancer.server.port=8000
|
||||
replicas: 2
|
||||
placement:
|
||||
max_replicas_per_node: 2
|
||||
max_replicas_per_node: 1
|
||||
constraints:
|
||||
- node.labels.run == true
|
||||
|
||||
@ -1030,30 +1030,28 @@ Huge gap in performance against Laravel Octane here, about twice better ! Withou
|
||||
|
||||
### FastAPI
|
||||
|
||||
As a side note here, uvicorn is limited to 1 CPU core, so I use 2 replicas on each worker to use all CPU cores.
|
||||
|
||||
#### FastAPI scenario 1
|
||||
|
||||
Iteration creation rate = **15/s**
|
||||
|
||||
```txt
|
||||
checks.........................: 100.00% 39525 out of 39525
|
||||
data_received..................: 324 MB 5.2 MB/s
|
||||
data_sent......................: 3.5 MB 56 kB/s
|
||||
dropped_iterations.............: 126 2.032659/s
|
||||
http_req_blocked...............: avg=22.84µs min=258ns med=1.01µs max=41.9ms p(90)=1.45µs p(95)=1.6µs
|
||||
http_req_connecting............: avg=1.32µs min=0s med=0s max=3.49ms p(90)=0s p(95)=0s
|
||||
http_req_duration..............: avg=69.4ms min=6.28ms med=62.49ms max=323.87ms p(90)=131.32ms p(95)=147.63ms
|
||||
{ expected_response:true }...: avg=69.4ms min=6.28ms med=62.49ms max=323.87ms p(90)=131.32ms p(95)=147.63ms
|
||||
http_req_failed................: 0.00% 0 out of 39525
|
||||
http_req_receiving.............: avg=410.93µs min=24.46µs med=281.1µs max=17.76ms p(90)=784.35µs p(95)=1.12ms
|
||||
http_req_sending...............: avg=121.75µs min=14.48µs med=105.29µs max=11.05ms p(90)=179.47µs p(95)=221.68µs
|
||||
http_req_tls_handshaking.......: avg=19.44µs min=0s med=0s max=28.07ms p(90)=0s p(95)=0s
|
||||
http_req_waiting...............: avg=68.87ms min=5.63ms med=61.98ms max=323.69ms p(90)=130.68ms p(95)=147ms
|
||||
http_reqs......................: 39525 637.625912/s
|
||||
iteration_duration.............: avg=3.57s min=822.25ms med=3.74s max=5.09s p(90)=4.25s p(95)=4.37s
|
||||
iterations.....................: 775 12.502469/s
|
||||
vus............................: 1 min=1 max=50
|
||||
checks.........................: 100.00% 28764 out of 28764
|
||||
data_received..................: 234 MB 3.7 MB/s
|
||||
data_sent......................: 2.6 MB 41 kB/s
|
||||
dropped_iterations.............: 336 5.300365/s
|
||||
http_req_blocked...............: avg=39.99µs min=242ns med=669ns max=68.16ms p(90)=1.14µs p(95)=1.32µs
|
||||
http_req_connecting............: avg=1.66µs min=0s med=0s max=3.75ms p(90)=0s p(95)=0s
|
||||
http_req_duration..............: avg=103.18ms min=6.22ms med=101.32ms max=452.09ms p(90)=139.92ms p(95)=157.15ms
|
||||
{ expected_response:true }...: avg=103.18ms min=6.22ms med=101.32ms max=452.09ms p(90)=139.92ms p(95)=157.15ms
|
||||
http_req_failed................: 0.00% 0 out of 28764
|
||||
http_req_receiving.............: avg=460.02µs min=28.21µs med=334.44µs max=18.75ms p(90)=862.97µs p(95)=1.19ms
|
||||
http_req_sending...............: avg=93.58µs min=21.19µs med=79.76µs max=3.26ms p(90)=141.54µs p(95)=167.69µs
|
||||
http_req_tls_handshaking.......: avg=35.6µs min=0s med=0s max=28.74ms p(90)=0s p(95)=0s
|
||||
http_req_waiting...............: avg=102.63ms min=5.98ms med=100.76ms max=451.57ms p(90)=139.32ms p(95)=156.56ms
|
||||
http_reqs......................: 28764 453.749133/s
|
||||
iteration_duration.............: avg=5.28s min=1.61s med=5.38s max=6.19s p(90)=5.71s p(95)=5.79s
|
||||
iterations.....................: 564 8.897042/s
|
||||
vus............................: 17 min=15 max=50
|
||||
vus_max........................: 50 min=50 max=50
|
||||
```
|
||||
|
||||
@ -1065,13 +1063,13 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'Req/s',
|
||||
data: [
|
||||
30, 575, 674, 684, 617, 668, 634, 638, 647,
|
||||
621, 662, 661, 670, 659, 617, 672, 644, 653,
|
||||
623, 606, 663, 650, 634, 666, 625, 652, 650,
|
||||
671, 651, 617, 598, 620, 624, 626, 602, 657,
|
||||
646, 649, 650, 638, 669, 640, 639, 636, 628,
|
||||
636, 654, 651, 668, 643, 663, 645, 644, 618,
|
||||
575, 627, 622, 660, 643, 644, 637, 626, 413
|
||||
50, 371, 331, 391, 475, 450, 464, 464, 467, 450,
|
||||
447, 467, 467, 455, 451, 458, 463, 485, 470, 476,
|
||||
449, 481, 485, 461, 476, 442, 455, 474, 454, 456,
|
||||
439, 478, 472, 436, 473, 453, 463, 471, 456, 455,
|
||||
439, 470, 456, 473, 465, 459, 468, 471, 475, 474,
|
||||
444, 484, 469, 466, 468, 448, 477, 449, 443, 482,
|
||||
444, 452, 432, 374, 1
|
||||
]
|
||||
}
|
||||
]
|
||||
@ -1086,12 +1084,12 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'VUs',
|
||||
data: [
|
||||
13, 18, 20, 24, 29, 33, 38, 41, 49, 47, 49, 49,
|
||||
46, 49, 49, 50, 42, 47, 49, 50, 50, 48, 50, 49,
|
||||
48, 46, 45, 50, 50, 49, 49, 50, 50, 47, 47, 48,
|
||||
50, 48, 50, 46, 49, 50, 50, 49, 50, 48, 47, 49,
|
||||
49, 48, 50, 49, 50, 49, 49, 48, 46, 48, 49, 49,
|
||||
34, 1
|
||||
15, 27, 39, 50, 50, 50, 49, 48, 48, 50, 50, 50,
|
||||
48, 46, 49, 50, 48, 49, 49, 50, 50, 50, 49, 48,
|
||||
47, 48, 50, 47, 48, 50, 47, 50, 50, 48, 46, 49,
|
||||
50, 50, 50, 49, 48, 50, 48, 49, 50, 50, 49, 44,
|
||||
49, 49, 49, 48, 50, 48, 50, 50, 47, 50, 49, 50,
|
||||
45, 37, 17
|
||||
]
|
||||
}
|
||||
]
|
||||
@ -1102,12 +1100,13 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'Duration (ms)',
|
||||
data: [
|
||||
19, 17, 24, 27, 36, 41, 48, 57, 64, 73, 71, 75,
|
||||
73, 71, 76, 72, 77, 67, 70, 80, 73, 75, 74, 75,
|
||||
78, 76, 73, 69, 74, 80, 79, 78, 78, 77, 81, 71,
|
||||
74, 74, 75, 75, 71, 72, 76, 76, 78, 74, 72, 76,
|
||||
71, 75, 70, 75, 75, 79, 84, 78, 77, 72, 74, 76,
|
||||
74, 64, 27
|
||||
21, 34, 77, 93, 102, 110, 107, 104, 105, 109,
|
||||
112, 106, 105, 103, 106, 107, 106, 103, 103, 102,
|
||||
108, 103, 102, 107, 103, 109, 106, 106, 107, 108,
|
||||
112, 103, 103, 111, 105, 107, 105, 104, 107, 107,
|
||||
115, 103, 108, 103, 107, 108, 105, 102, 101, 104,
|
||||
112, 102, 105, 104, 105, 110, 104, 106, 108, 105,
|
||||
111, 102, 85, 47, 8
|
||||
]
|
||||
}
|
||||
]
|
||||
@ -1121,10 +1120,10 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'User',
|
||||
data: [
|
||||
0.02, 0.09, 0.72, 0.72,
|
||||
0.76, 0.76, 0.75, 0.75,
|
||||
0.75, 0.75, 0.76, 0.77,
|
||||
0.78, 0.78, 0.17, 0.02,
|
||||
0.02, 0.02, 0.1, 0.74,
|
||||
0.78, 0.77, 0.79, 0.79,
|
||||
0.78, 0.78, 0.78, 0.78,
|
||||
0.78, 0.77, 0.78, 0.36,
|
||||
0.02, 0.02, 0.02
|
||||
],
|
||||
borderColor: '#4bc0c0',
|
||||
@ -1134,10 +1133,10 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'System',
|
||||
data: [
|
||||
0.01, 0.04, 0.22, 0.21,
|
||||
0.22, 0.23, 0.22, 0.22,
|
||||
0.22, 0.22, 0.21, 0.23,
|
||||
0.22, 0.22, 0.06, 0.01,
|
||||
0.01, 0.01, 0.04, 0.2,
|
||||
0.21, 0.21, 0.21, 0.2,
|
||||
0.21, 0.21, 0.21, 0.21,
|
||||
0.21, 0.22, 0.21, 0.1,
|
||||
0.02, 0.01, 0.01
|
||||
],
|
||||
borderColor: '#ff6384',
|
||||
@ -1152,11 +1151,11 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'User',
|
||||
data: [
|
||||
0.02, 0.04, 0.32, 0.33,
|
||||
0.34, 0.34, 0.34, 0.35,
|
||||
0.34, 0.33, 0.34, 0.33,
|
||||
0.34, 0.35, 0.11, 0.02,
|
||||
0.02, 0.02, 0.02
|
||||
0.02, 0.02, 0.37, 0.5,
|
||||
0.5, 0.49, 0.48, 0.5,
|
||||
0.49, 0.5, 0.49, 0.5,
|
||||
0.49, 0.5, 0.41, 0.02,
|
||||
0.03, 0.02, 0.02
|
||||
],
|
||||
borderColor: '#4bc0c0',
|
||||
backgroundColor: '#4bc0c0',
|
||||
@ -1165,11 +1164,11 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'System',
|
||||
data: [
|
||||
0.03, 0.03, 0.16, 0.2,
|
||||
0.19, 0.2, 0.21, 0.23,
|
||||
0.23, 0.19, 0.22, 0.18,
|
||||
0.23, 0.2, 0.07, 0.02,
|
||||
0.02, 0.03, 0.03
|
||||
0.02, 0.02, 0.33, 0.34,
|
||||
0.34, 0.33, 0.32, 0.35,
|
||||
0.34, 0.35, 0.36, 0.33,
|
||||
0.32, 0.36, 0.33, 0.02,
|
||||
0.02, 0.02, 0.02
|
||||
],
|
||||
borderColor: '#ff6384',
|
||||
backgroundColor: '#ff6384',
|
||||
@ -1186,24 +1185,24 @@ vus_max........................: 50 min=50 max=50
|
||||
Iteration creation rate = **2/s**
|
||||
|
||||
```txt
|
||||
checks.........................: 67.75% 35254 out of 52029
|
||||
data_received..................: 92 MB 1.0 MB/s
|
||||
data_sent......................: 3.8 MB 42 kB/s
|
||||
dropped_iterations.............: 70 0.777606/s
|
||||
http_req_blocked...............: avg=23.08µs min=232ns med=1µs max=103.63ms p(90)=1.42µs p(95)=1.56µs
|
||||
http_req_connecting............: avg=977ns min=0s med=0s max=5.29ms p(90)=0s p(95)=0s
|
||||
http_req_duration..............: avg=74.22ms min=3.71ms med=57.69ms max=366.12ms p(90)=157.54ms p(95)=180.86ms
|
||||
{ expected_response:true }...: avg=68.87ms min=3.71ms med=52.82ms max=366.12ms p(90)=147.21ms p(95)=170.41ms
|
||||
http_req_failed................: 32.24% 16775 out of 52029
|
||||
http_req_receiving.............: avg=237.94µs min=18.29µs med=130.97µs max=11.5ms p(90)=498.83µs p(95)=758.8µs
|
||||
http_req_sending...............: avg=116.57µs min=16.04µs med=104.78µs max=5.81ms p(90)=174.59µs p(95)=212.82µs
|
||||
http_req_tls_handshaking.......: avg=19.29µs min=0s med=0s max=27.95ms p(90)=0s p(95)=0s
|
||||
http_req_waiting...............: avg=73.86ms min=3.02ms med=57.38ms max=365.81ms p(90)=157.13ms p(95)=180.31ms
|
||||
http_reqs......................: 52029 577.972273/s
|
||||
iteration_duration.............: avg=1m26s min=1m26s med=1m26s max=1m26s p(90)=1m26s p(95)=1m26s
|
||||
iterations.....................: 3 0.033326/s
|
||||
vus............................: 47 min=2 max=50
|
||||
vus_max........................: 50 min=50 max=50
|
||||
checks.........................: 100.00% 72770 out of 72770
|
||||
data_received..................: 145 MB 1.6 MB/s
|
||||
data_sent......................: 5.5 MB 61 kB/s
|
||||
dropped_iterations.............: 66 0.733176/s
|
||||
http_req_blocked...............: avg=14.03µs min=198ns med=645ns max=144.52ms p(90)=1.11µs p(95)=1.27µs
|
||||
http_req_connecting............: avg=629ns min=0s med=0s max=5.17ms p(90)=0s p(95)=0s
|
||||
http_req_duration..............: avg=50.94ms min=3.78ms med=38.97ms max=384.02ms p(90)=107.46ms p(95)=136.98ms
|
||||
{ expected_response:true }...: avg=50.94ms min=3.78ms med=38.97ms max=384.02ms p(90)=107.46ms p(95)=136.98ms
|
||||
http_req_failed................: 0.00% 0 out of 72770
|
||||
http_req_receiving.............: avg=200.09µs min=18.28µs med=107.44µs max=18.54ms p(90)=399.04µs p(95)=632µs
|
||||
http_req_sending...............: avg=86.57µs min=16.71µs med=73.65µs max=13.95ms p(90)=132.89µs p(95)=158.51µs
|
||||
http_req_tls_handshaking.......: avg=10.86µs min=0s med=0s max=28.74ms p(90)=0s p(95)=0s
|
||||
http_req_waiting...............: avg=50.66ms min=3.64ms med=38.7ms max=383.81ms p(90)=107.11ms p(95)=136.61ms
|
||||
http_reqs......................: 72770 808.381614/s
|
||||
iteration_duration.............: avg=1m6s min=49.42s med=1m8s max=1m19s p(90)=1m18s p(95)=1m18s
|
||||
iterations.....................: 18 0.199957/s
|
||||
vus............................: 37 min=2 max=50
|
||||
vus_max........................: 50 min=50 max=50
|
||||
```
|
||||
|
||||
{{< tabs >}}
|
||||
@ -1214,15 +1213,14 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'Req/s',
|
||||
data: [
|
||||
34, 277, 442, 502, 566, 530, 612, 611, 593, 630, 577,
|
||||
606, 619, 529, 568, 567, 599, 606, 559, 567, 557, 613,
|
||||
604, 558, 617, 580, 607, 586, 581, 615, 564, 610, 612,
|
||||
576, 596, 561, 610, 602, 561, 616, 571, 612, 604, 577,
|
||||
586, 593, 595, 598, 566, 599, 592, 589, 585, 590, 603,
|
||||
596, 608, 580, 571, 580, 583, 598, 606, 541, 581, 575,
|
||||
595, 580, 591, 625, 577, 584, 601, 591, 585, 592, 620,
|
||||
598, 574, 598, 571, 599, 596, 592, 603, 590, 593, 578,
|
||||
599, 585, 113
|
||||
734, 921, 803, 822, 870, 809, 859, 751, 834, 825,
|
||||
786, 779, 811, 928, 869, 802, 802, 802, 832, 802,
|
||||
798, 824, 768, 845, 825, 762, 860, 758, 812, 813,
|
||||
808, 783, 772, 797, 831, 835, 799, 781, 844, 824,
|
||||
787, 801, 769, 819, 799, 774, 837, 776, 837, 826,
|
||||
821, 776, 791, 816, 838, 792, 900, 795, 815, 807,
|
||||
781, 819, 729, 848, 861, 839, 872, 762, 796, 902,
|
||||
790, 791, 791, 830, 815, 835, 832, 583
|
||||
]
|
||||
}
|
||||
]
|
||||
@ -1237,14 +1235,13 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'VUs',
|
||||
data: [
|
||||
2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24,
|
||||
26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48,
|
||||
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
|
||||
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
|
||||
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
|
||||
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
|
||||
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
|
||||
50, 50, 48, 47, 47, 47
|
||||
50, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49,
|
||||
50, 50, 50, 49, 49, 48, 48, 48, 48, 47, 47, 46,
|
||||
46, 46, 45, 44, 44, 44, 44, 43, 43, 42, 42, 40,
|
||||
40, 39, 38, 37, 37, 37
|
||||
]
|
||||
}
|
||||
]
|
||||
@ -1255,14 +1252,13 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'Duration (ms)',
|
||||
data: [
|
||||
28, 11, 11, 14, 16, 21, 21, 25, 28, 30, 36, 37,
|
||||
40, 50, 50, 56, 55, 58, 64, 67, 73, 71, 75, 83,
|
||||
79, 84, 83, 83, 88, 81, 89, 82, 81, 86, 83, 89,
|
||||
81, 85, 87, 80, 88, 82, 81, 88, 84, 83, 84, 86,
|
||||
86, 84, 83, 85, 86, 84, 81, 85, 81, 86, 88, 83,
|
||||
86, 85, 83, 91, 86, 87, 86, 85, 85, 80, 84, 85,
|
||||
83, 84, 85, 85, 82, 83, 85, 84, 84, 86, 84, 84,
|
||||
84, 82, 86, 81, 81, 79, 80
|
||||
29, 30, 37, 38, 39, 44, 43, 53, 49, 53, 58, 61,
|
||||
61, 54, 57, 62, 62, 62, 61, 62, 61, 61, 65, 59,
|
||||
60, 66, 59, 65, 61, 62, 62, 63, 65, 63, 60, 60,
|
||||
61, 63, 59, 60, 62, 64, 65, 60, 63, 65, 59, 64,
|
||||
59, 60, 61, 62, 62, 58, 59, 60, 53, 60, 57, 58,
|
||||
57, 57, 61, 53, 50, 53, 51, 56, 54, 46, 54, 50,
|
||||
51, 48, 47, 45, 45, 50
|
||||
]
|
||||
}
|
||||
]
|
||||
@ -1276,11 +1272,11 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'User',
|
||||
data: [
|
||||
0.02, 0.03, 0.53, 0.76,
|
||||
0.8, 0.81, 0.83, 0.83,
|
||||
0.83, 0.83, 0.83, 0.83,
|
||||
0.8, 0.75, 0.83, 0.8,
|
||||
0.83, 0.8, 0.75
|
||||
0.51, 0.71, 0.76, 0.7,
|
||||
0.72, 0.72, 0.74, 0.77,
|
||||
0.72, 0.73, 0.75, 0.74,
|
||||
0.73, 0.78, 0.77, 0.66,
|
||||
0.76, 0.6, 0.02
|
||||
],
|
||||
borderColor: '#4bc0c0',
|
||||
backgroundColor: '#4bc0c0',
|
||||
@ -1289,11 +1285,11 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'System',
|
||||
data: [
|
||||
0.02, 0.02, 0.12, 0.17,
|
||||
0.17, 0.17, 0.17, 0.17,
|
||||
0.17, 0.17, 0.17, 0.17,
|
||||
0.17, 0.16, 0.17, 0.17,
|
||||
0.17, 0.17, 0.16
|
||||
0.15, 0.2, 0.2, 0.18,
|
||||
0.19, 0.18, 0.19, 0.2,
|
||||
0.19, 0.19, 0.19, 0.19,
|
||||
0.19, 0.19, 0.18, 0.17,
|
||||
0.2, 0.16, 0.01
|
||||
],
|
||||
borderColor: '#ff6384',
|
||||
backgroundColor: '#ff6384',
|
||||
@ -1307,11 +1303,11 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'User',
|
||||
data: [
|
||||
0.02, 0.02, 0.17, 0.26,
|
||||
0.24, 0.21, 0.22, 0.21,
|
||||
0.22, 0.23, 0.22, 0.22,
|
||||
0.22, 0.23, 0.22, 0.22,
|
||||
0.23, 0.22, 0.22
|
||||
0.42, 0.47, 0.48, 0.51,
|
||||
0.51, 0.52, 0.49, 0.52,
|
||||
0.52, 0.52, 0.51, 0.53,
|
||||
0.51, 0.52, 0.49, 0.5,
|
||||
0.52, 0.12, 0.03
|
||||
],
|
||||
borderColor: '#4bc0c0',
|
||||
backgroundColor: '#4bc0c0',
|
||||
@ -1320,11 +1316,11 @@ vus_max........................: 50 min=50 max=50
|
||||
{
|
||||
label: 'System',
|
||||
data: [
|
||||
0.02, 0.02, 0.13, 0.21,
|
||||
0.24, 0.26, 0.26, 0.22,
|
||||
0.23, 0.26, 0.24, 0.26,
|
||||
0.26, 0.25, 0.26, 0.26,
|
||||
0.26, 0.26, 0.26
|
||||
0.15, 0.29, 0.37, 0.44,
|
||||
0.43, 0.46, 0.42, 0.47,
|
||||
0.47, 0.45, 0.46, 0.46,
|
||||
0.41, 0.46, 0.39, 0.39,
|
||||
0.42, 0.11, 0.02
|
||||
],
|
||||
borderColor: '#ff6384',
|
||||
backgroundColor: '#ff6384',
|
||||
@ -2292,13 +2288,13 @@ Here are the final req/s results for each framework against PgSQL database.
|
||||
borderColor: "#0f766e",
|
||||
backgroundColor: "#0f766e",
|
||||
data: [
|
||||
30, 575, 674, 684, 617, 668, 634, 638, 647,
|
||||
621, 662, 661, 670, 659, 617, 672, 644, 653,
|
||||
623, 606, 663, 650, 634, 666, 625, 652, 650,
|
||||
671, 651, 617, 598, 620, 624, 626, 602, 657,
|
||||
646, 649, 650, 638, 669, 640, 639, 636, 628,
|
||||
636, 654, 651, 668, 643, 663, 645, 644, 618,
|
||||
575, 627, 622, 660, 643, 644, 637, 626, 413
|
||||
50, 371, 331, 391, 475, 450, 464, 464, 467, 450,
|
||||
447, 467, 467, 455, 451, 458, 463, 485, 470, 476,
|
||||
449, 481, 485, 461, 476, 442, 455, 474, 454, 456,
|
||||
439, 478, 472, 436, 473, 453, 463, 471, 456, 455,
|
||||
439, 470, 456, 473, 465, 459, 468, 471, 475, 474,
|
||||
444, 484, 469, 466, 468, 448, 477, 449, 443, 482,
|
||||
444, 452, 432, 374, 1
|
||||
],
|
||||
},
|
||||
{
|
||||
@ -2389,15 +2385,14 @@ Here are the final req/s results for each framework against PgSQL database.
|
||||
borderColor: "#0f766e",
|
||||
backgroundColor: "#0f766e",
|
||||
data: [
|
||||
34, 277, 442, 502, 566, 530, 612, 611, 593, 630, 577,
|
||||
606, 619, 529, 568, 567, 599, 606, 559, 567, 557, 613,
|
||||
604, 558, 617, 580, 607, 586, 581, 615, 564, 610, 612,
|
||||
576, 596, 561, 610, 602, 561, 616, 571, 612, 604, 577,
|
||||
586, 593, 595, 598, 566, 599, 592, 589, 585, 590, 603,
|
||||
596, 608, 580, 571, 580, 583, 598, 606, 541, 581, 575,
|
||||
595, 580, 591, 625, 577, 584, 601, 591, 585, 592, 620,
|
||||
598, 574, 598, 571, 599, 596, 592, 603, 590, 593, 578,
|
||||
599, 585, 113
|
||||
734, 921, 803, 822, 870, 809, 859, 751, 834, 825,
|
||||
786, 779, 811, 928, 869, 802, 802, 802, 832, 802,
|
||||
798, 824, 768, 845, 825, 762, 860, 758, 812, 813,
|
||||
808, 783, 772, 797, 831, 835, 799, 781, 844, 824,
|
||||
787, 801, 769, 819, 799, 774, 837, 776, 837, 826,
|
||||
821, 776, 791, 816, 838, 792, 900, 795, 815, 807,
|
||||
781, 819, 729, 848, 861, 839, 872, 762, 796, 902,
|
||||
790, 791, 791, 830, 815, 835, 832, 583
|
||||
],
|
||||
},
|
||||
{
|
||||
|
@ -70,11 +70,8 @@
|
||||
title: Vuetify Admin
|
||||
date: 11/2020
|
||||
repo: okami101/vuetify-admin
|
||||
demo: https://va-demo.okami101.io/
|
||||
docs: https://www.okami101.io/vuetify-admin
|
||||
|
||||
- name: laravel-rad-stack
|
||||
title: Laravel RAD Stack
|
||||
date: 10/2021
|
||||
repo: adr1enbe4udou1n/laravel-rad-stack
|
||||
demo: https://laravel-rad-stack.okami101.io/
|
||||
|
@ -74,8 +74,8 @@
|
||||
{{ end }}
|
||||
<div class="flex items-center justify-between">
|
||||
<div class="flex items-center gap-4">
|
||||
<img src="/kube.png" width="30" height="30" alt="Kubernetes"
|
||||
title="Run on K3s over Hetzner Cloud" />
|
||||
<img src="/talos-logo.svg" width="30" height="30" alt="Talos Linux"
|
||||
title="Run on Talos Linux over Hetzner Cloud" />
|
||||
</div>
|
||||
<div class="hidden lg:block">
|
||||
{{/* Copyright */}}
|
||||
|
BIN
static/kube.png
BIN
static/kube.png
Binary file not shown.
Before Width: | Height: | Size: 15 KiB |
3
static/talos-logo.svg
Normal file
3
static/talos-logo.svg
Normal file
@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 203.74 226.05"><defs><style>.cls-1{fill:url(#linear-gradient);}.cls-2{fill:url(#linear-gradient-2);}.cls-3{fill:url(#linear-gradient-3);}.cls-4{fill:url(#linear-gradient-4);}.cls-5{fill:url(#linear-gradient-5);}</style><linearGradient id="linear-gradient" x1="101.85" y1="-15.19" x2="101.85" y2="237.81" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ffd200"/><stop offset="0.06" stop-color="#ffb500"/><stop offset="0.14" stop-color="#ff8c00"/><stop offset="0.21" stop-color="#ff7300"/><stop offset="0.26" stop-color="#ff6a00"/><stop offset="0.33" stop-color="#fc4f0e"/><stop offset="0.43" stop-color="#f92f1e"/><stop offset="0.51" stop-color="#f81b27"/><stop offset="0.57" stop-color="#f7142b"/><stop offset="0.68" stop-color="#df162e"/><stop offset="0.79" stop-color="#af1a38"/><stop offset="1" stop-color="#4b214c"/></linearGradient><linearGradient id="linear-gradient-2" x1="24.84" y1="-15.19" x2="24.84" y2="237.81" xlink:href="#linear-gradient"/><linearGradient id="linear-gradient-3" x1="178.9" y1="-15.19" x2="178.9" y2="237.81" xlink:href="#linear-gradient"/><linearGradient id="linear-gradient-4" x1="145.06" y1="-15.19" x2="145.06" y2="237.81" xlink:href="#linear-gradient"/><linearGradient id="linear-gradient-5" x1="58.64" y1="-15.19" x2="58.64" y2="237.81" xlink:href="#linear-gradient"/></defs><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M101.89,226.05c2.85,0,5.67-.15,8.46-.35V.35c-2.8-.21-5.62-.35-8.48-.35s-5.7.14-8.52.35V225.69c2.81.21,5.64.35,8.5.36Z"/><path class="cls-2" d="M11.56,50.9,9.12,48.47A112.82,112.82,0,0,0,.2,63.61c29.42,29.89,32.52,44.31,32.48,49.14C32.57,125,17.58,144.21,0,162a113.69,113.69,0,0,0,8.84,15.15c1-1,1.95-1.92,2.92-2.9,25.37-25.54,37.77-45.61,37.92-61.38S37.36,77,11.56,50.9Z"/><path class="cls-3" d="M192,174.29l2.92,2.9A113.69,113.69,0,0,0,203.74,162c-17.57-17.83-32.56-37.09-32.68-49.29-.11-11.9,14.79-31.15,32.46-49.18a112.88,112.88,0,0,0-8.9-15.1l-2.44,2.43c-25.8,26.05-38.27,46.34-38.12,62S166.61,148.75,192,174.29Z"/><path class="cls-4" d="M140.68,112.83c0-22,9.81-58.58,24.92-93.15A113,113,0,0,0,150.45,11c-16.54,37.27-26.78,76.91-26.78,101.87,0,24.15,11.09,64.23,27.93,101.7a113,113,0,0,0,14.84-8.77C150.85,170.73,140.68,134.07,140.68,112.83Z"/><path class="cls-5" d="M80,112.83C80,87.74,69.35,47.88,53,11.07a112.76,112.76,0,0,0-14.93,8.64C53.21,54.26,63,90.85,63,112.83c0,21.23-10.17,57.88-25.76,92.91a113.66,113.66,0,0,0,14.84,8.77C68.94,177.05,80,137,80,112.83Z"/></g></g></svg>
|
After Width: | Height: | Size: 2.7 KiB |
Submodule themes/congo updated: 9dbf87b450...15b06a8615
Reference in New Issue
Block a user