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 >}}
|
{{< /lead >}}
|
||||||
|
|
||||||
{{< alert >}}
|
{{< 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 >}}
|
{{< /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.
|
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 |
|
| 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 |
|
| [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) |
|
| [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 |
|
| [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 |
|
| [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
|
- traefik.http.services.fastapi.loadbalancer.server.port=8000
|
||||||
replicas: 2
|
replicas: 2
|
||||||
placement:
|
placement:
|
||||||
max_replicas_per_node: 2
|
max_replicas_per_node: 1
|
||||||
constraints:
|
constraints:
|
||||||
- node.labels.run == true
|
- node.labels.run == true
|
||||||
|
|
||||||
@ -1030,30 +1030,28 @@ Huge gap in performance against Laravel Octane here, about twice better ! Withou
|
|||||||
|
|
||||||
### FastAPI
|
### 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
|
#### FastAPI scenario 1
|
||||||
|
|
||||||
Iteration creation rate = **15/s**
|
Iteration creation rate = **15/s**
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
checks.........................: 100.00% 39525 out of 39525
|
checks.........................: 100.00% 28764 out of 28764
|
||||||
data_received..................: 324 MB 5.2 MB/s
|
data_received..................: 234 MB 3.7 MB/s
|
||||||
data_sent......................: 3.5 MB 56 kB/s
|
data_sent......................: 2.6 MB 41 kB/s
|
||||||
dropped_iterations.............: 126 2.032659/s
|
dropped_iterations.............: 336 5.300365/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_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.32µs min=0s med=0s max=3.49ms p(90)=0s p(95)=0s
|
http_req_connecting............: avg=1.66µs min=0s med=0s max=3.75ms 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
|
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=69.4ms min=6.28ms med=62.49ms max=323.87ms p(90)=131.32ms p(95)=147.63ms
|
{ 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 39525
|
http_req_failed................: 0.00% 0 out of 28764
|
||||||
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_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=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_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=19.44µs min=0s med=0s max=28.07ms p(90)=0s p(95)=0s
|
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=68.87ms min=5.63ms med=61.98ms max=323.69ms p(90)=130.68ms p(95)=147ms
|
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......................: 39525 637.625912/s
|
http_reqs......................: 28764 453.749133/s
|
||||||
iteration_duration.............: avg=3.57s min=822.25ms med=3.74s max=5.09s p(90)=4.25s p(95)=4.37s
|
iteration_duration.............: avg=5.28s min=1.61s med=5.38s max=6.19s p(90)=5.71s p(95)=5.79s
|
||||||
iterations.....................: 775 12.502469/s
|
iterations.....................: 564 8.897042/s
|
||||||
vus............................: 1 min=1 max=50
|
vus............................: 17 min=15 max=50
|
||||||
vus_max........................: 50 min=50 max=50
|
vus_max........................: 50 min=50 max=50
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -1065,13 +1063,13 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'Req/s',
|
label: 'Req/s',
|
||||||
data: [
|
data: [
|
||||||
30, 575, 674, 684, 617, 668, 634, 638, 647,
|
50, 371, 331, 391, 475, 450, 464, 464, 467, 450,
|
||||||
621, 662, 661, 670, 659, 617, 672, 644, 653,
|
447, 467, 467, 455, 451, 458, 463, 485, 470, 476,
|
||||||
623, 606, 663, 650, 634, 666, 625, 652, 650,
|
449, 481, 485, 461, 476, 442, 455, 474, 454, 456,
|
||||||
671, 651, 617, 598, 620, 624, 626, 602, 657,
|
439, 478, 472, 436, 473, 453, 463, 471, 456, 455,
|
||||||
646, 649, 650, 638, 669, 640, 639, 636, 628,
|
439, 470, 456, 473, 465, 459, 468, 471, 475, 474,
|
||||||
636, 654, 651, 668, 643, 663, 645, 644, 618,
|
444, 484, 469, 466, 468, 448, 477, 449, 443, 482,
|
||||||
575, 627, 622, 660, 643, 644, 637, 626, 413
|
444, 452, 432, 374, 1
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1086,12 +1084,12 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'VUs',
|
label: 'VUs',
|
||||||
data: [
|
data: [
|
||||||
13, 18, 20, 24, 29, 33, 38, 41, 49, 47, 49, 49,
|
15, 27, 39, 50, 50, 50, 49, 48, 48, 50, 50, 50,
|
||||||
46, 49, 49, 50, 42, 47, 49, 50, 50, 48, 50, 49,
|
48, 46, 49, 50, 48, 49, 49, 50, 50, 50, 49, 48,
|
||||||
48, 46, 45, 50, 50, 49, 49, 50, 50, 47, 47, 48,
|
47, 48, 50, 47, 48, 50, 47, 50, 50, 48, 46, 49,
|
||||||
50, 48, 50, 46, 49, 50, 50, 49, 50, 48, 47, 49,
|
50, 50, 50, 49, 48, 50, 48, 49, 50, 50, 49, 44,
|
||||||
49, 48, 50, 49, 50, 49, 49, 48, 46, 48, 49, 49,
|
49, 49, 49, 48, 50, 48, 50, 50, 47, 50, 49, 50,
|
||||||
34, 1
|
45, 37, 17
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1102,12 +1100,13 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'Duration (ms)',
|
label: 'Duration (ms)',
|
||||||
data: [
|
data: [
|
||||||
19, 17, 24, 27, 36, 41, 48, 57, 64, 73, 71, 75,
|
21, 34, 77, 93, 102, 110, 107, 104, 105, 109,
|
||||||
73, 71, 76, 72, 77, 67, 70, 80, 73, 75, 74, 75,
|
112, 106, 105, 103, 106, 107, 106, 103, 103, 102,
|
||||||
78, 76, 73, 69, 74, 80, 79, 78, 78, 77, 81, 71,
|
108, 103, 102, 107, 103, 109, 106, 106, 107, 108,
|
||||||
74, 74, 75, 75, 71, 72, 76, 76, 78, 74, 72, 76,
|
112, 103, 103, 111, 105, 107, 105, 104, 107, 107,
|
||||||
71, 75, 70, 75, 75, 79, 84, 78, 77, 72, 74, 76,
|
115, 103, 108, 103, 107, 108, 105, 102, 101, 104,
|
||||||
74, 64, 27
|
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',
|
label: 'User',
|
||||||
data: [
|
data: [
|
||||||
0.02, 0.09, 0.72, 0.72,
|
0.02, 0.02, 0.1, 0.74,
|
||||||
0.76, 0.76, 0.75, 0.75,
|
0.78, 0.77, 0.79, 0.79,
|
||||||
0.75, 0.75, 0.76, 0.77,
|
0.78, 0.78, 0.78, 0.78,
|
||||||
0.78, 0.78, 0.17, 0.02,
|
0.78, 0.77, 0.78, 0.36,
|
||||||
0.02, 0.02, 0.02
|
0.02, 0.02, 0.02
|
||||||
],
|
],
|
||||||
borderColor: '#4bc0c0',
|
borderColor: '#4bc0c0',
|
||||||
@ -1134,10 +1133,10 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'System',
|
label: 'System',
|
||||||
data: [
|
data: [
|
||||||
0.01, 0.04, 0.22, 0.21,
|
0.01, 0.01, 0.04, 0.2,
|
||||||
0.22, 0.23, 0.22, 0.22,
|
0.21, 0.21, 0.21, 0.2,
|
||||||
0.22, 0.22, 0.21, 0.23,
|
0.21, 0.21, 0.21, 0.21,
|
||||||
0.22, 0.22, 0.06, 0.01,
|
0.21, 0.22, 0.21, 0.1,
|
||||||
0.02, 0.01, 0.01
|
0.02, 0.01, 0.01
|
||||||
],
|
],
|
||||||
borderColor: '#ff6384',
|
borderColor: '#ff6384',
|
||||||
@ -1152,11 +1151,11 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'User',
|
label: 'User',
|
||||||
data: [
|
data: [
|
||||||
0.02, 0.04, 0.32, 0.33,
|
0.02, 0.02, 0.37, 0.5,
|
||||||
0.34, 0.34, 0.34, 0.35,
|
0.5, 0.49, 0.48, 0.5,
|
||||||
0.34, 0.33, 0.34, 0.33,
|
0.49, 0.5, 0.49, 0.5,
|
||||||
0.34, 0.35, 0.11, 0.02,
|
0.49, 0.5, 0.41, 0.02,
|
||||||
0.02, 0.02, 0.02
|
0.03, 0.02, 0.02
|
||||||
],
|
],
|
||||||
borderColor: '#4bc0c0',
|
borderColor: '#4bc0c0',
|
||||||
backgroundColor: '#4bc0c0',
|
backgroundColor: '#4bc0c0',
|
||||||
@ -1165,11 +1164,11 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'System',
|
label: 'System',
|
||||||
data: [
|
data: [
|
||||||
0.03, 0.03, 0.16, 0.2,
|
0.02, 0.02, 0.33, 0.34,
|
||||||
0.19, 0.2, 0.21, 0.23,
|
0.34, 0.33, 0.32, 0.35,
|
||||||
0.23, 0.19, 0.22, 0.18,
|
0.34, 0.35, 0.36, 0.33,
|
||||||
0.23, 0.2, 0.07, 0.02,
|
0.32, 0.36, 0.33, 0.02,
|
||||||
0.02, 0.03, 0.03
|
0.02, 0.02, 0.02
|
||||||
],
|
],
|
||||||
borderColor: '#ff6384',
|
borderColor: '#ff6384',
|
||||||
backgroundColor: '#ff6384',
|
backgroundColor: '#ff6384',
|
||||||
@ -1186,24 +1185,24 @@ vus_max........................: 50 min=50 max=50
|
|||||||
Iteration creation rate = **2/s**
|
Iteration creation rate = **2/s**
|
||||||
|
|
||||||
```txt
|
```txt
|
||||||
checks.........................: 67.75% 35254 out of 52029
|
checks.........................: 100.00% 72770 out of 72770
|
||||||
data_received..................: 92 MB 1.0 MB/s
|
data_received..................: 145 MB 1.6 MB/s
|
||||||
data_sent......................: 3.8 MB 42 kB/s
|
data_sent......................: 5.5 MB 61 kB/s
|
||||||
dropped_iterations.............: 70 0.777606/s
|
dropped_iterations.............: 66 0.733176/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_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=977ns min=0s med=0s max=5.29ms p(90)=0s p(95)=0s
|
http_req_connecting............: avg=629ns min=0s med=0s max=5.17ms 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
|
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=68.87ms min=3.71ms med=52.82ms max=366.12ms p(90)=147.21ms p(95)=170.41ms
|
{ 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................: 32.24% 16775 out of 52029
|
http_req_failed................: 0.00% 0 out of 72770
|
||||||
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_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=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_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=19.29µs min=0s med=0s max=27.95ms p(90)=0s p(95)=0s
|
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=73.86ms min=3.02ms med=57.38ms max=365.81ms p(90)=157.13ms p(95)=180.31ms
|
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......................: 52029 577.972273/s
|
http_reqs......................: 72770 808.381614/s
|
||||||
iteration_duration.............: avg=1m26s min=1m26s med=1m26s max=1m26s p(90)=1m26s p(95)=1m26s
|
iteration_duration.............: avg=1m6s min=49.42s med=1m8s max=1m19s p(90)=1m18s p(95)=1m18s
|
||||||
iterations.....................: 3 0.033326/s
|
iterations.....................: 18 0.199957/s
|
||||||
vus............................: 47 min=2 max=50
|
vus............................: 37 min=2 max=50
|
||||||
vus_max........................: 50 min=50 max=50
|
vus_max........................: 50 min=50 max=50
|
||||||
```
|
```
|
||||||
|
|
||||||
{{< tabs >}}
|
{{< tabs >}}
|
||||||
@ -1214,15 +1213,14 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'Req/s',
|
label: 'Req/s',
|
||||||
data: [
|
data: [
|
||||||
34, 277, 442, 502, 566, 530, 612, 611, 593, 630, 577,
|
734, 921, 803, 822, 870, 809, 859, 751, 834, 825,
|
||||||
606, 619, 529, 568, 567, 599, 606, 559, 567, 557, 613,
|
786, 779, 811, 928, 869, 802, 802, 802, 832, 802,
|
||||||
604, 558, 617, 580, 607, 586, 581, 615, 564, 610, 612,
|
798, 824, 768, 845, 825, 762, 860, 758, 812, 813,
|
||||||
576, 596, 561, 610, 602, 561, 616, 571, 612, 604, 577,
|
808, 783, 772, 797, 831, 835, 799, 781, 844, 824,
|
||||||
586, 593, 595, 598, 566, 599, 592, 589, 585, 590, 603,
|
787, 801, 769, 819, 799, 774, 837, 776, 837, 826,
|
||||||
596, 608, 580, 571, 580, 583, 598, 606, 541, 581, 575,
|
821, 776, 791, 816, 838, 792, 900, 795, 815, 807,
|
||||||
595, 580, 591, 625, 577, 584, 601, 591, 585, 592, 620,
|
781, 819, 729, 848, 861, 839, 872, 762, 796, 902,
|
||||||
598, 574, 598, 571, 599, 596, 592, 603, 590, 593, 578,
|
790, 791, 791, 830, 815, 835, 832, 583
|
||||||
599, 585, 113
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1237,14 +1235,13 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'VUs',
|
label: 'VUs',
|
||||||
data: [
|
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,
|
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, 49, 50, 50, 50, 50, 50, 50, 50, 50, 50, 49,
|
||||||
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
|
50, 50, 50, 49, 49, 48, 48, 48, 48, 47, 47, 46,
|
||||||
50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50,
|
46, 46, 45, 44, 44, 44, 44, 43, 43, 42, 42, 40,
|
||||||
50, 50, 48, 47, 47, 47
|
40, 39, 38, 37, 37, 37
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1255,14 +1252,13 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'Duration (ms)',
|
label: 'Duration (ms)',
|
||||||
data: [
|
data: [
|
||||||
28, 11, 11, 14, 16, 21, 21, 25, 28, 30, 36, 37,
|
29, 30, 37, 38, 39, 44, 43, 53, 49, 53, 58, 61,
|
||||||
40, 50, 50, 56, 55, 58, 64, 67, 73, 71, 75, 83,
|
61, 54, 57, 62, 62, 62, 61, 62, 61, 61, 65, 59,
|
||||||
79, 84, 83, 83, 88, 81, 89, 82, 81, 86, 83, 89,
|
60, 66, 59, 65, 61, 62, 62, 63, 65, 63, 60, 60,
|
||||||
81, 85, 87, 80, 88, 82, 81, 88, 84, 83, 84, 86,
|
61, 63, 59, 60, 62, 64, 65, 60, 63, 65, 59, 64,
|
||||||
86, 84, 83, 85, 86, 84, 81, 85, 81, 86, 88, 83,
|
59, 60, 61, 62, 62, 58, 59, 60, 53, 60, 57, 58,
|
||||||
86, 85, 83, 91, 86, 87, 86, 85, 85, 80, 84, 85,
|
57, 57, 61, 53, 50, 53, 51, 56, 54, 46, 54, 50,
|
||||||
83, 84, 85, 85, 82, 83, 85, 84, 84, 86, 84, 84,
|
51, 48, 47, 45, 45, 50
|
||||||
84, 82, 86, 81, 81, 79, 80
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
@ -1276,11 +1272,11 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'User',
|
label: 'User',
|
||||||
data: [
|
data: [
|
||||||
0.02, 0.03, 0.53, 0.76,
|
0.51, 0.71, 0.76, 0.7,
|
||||||
0.8, 0.81, 0.83, 0.83,
|
0.72, 0.72, 0.74, 0.77,
|
||||||
0.83, 0.83, 0.83, 0.83,
|
0.72, 0.73, 0.75, 0.74,
|
||||||
0.8, 0.75, 0.83, 0.8,
|
0.73, 0.78, 0.77, 0.66,
|
||||||
0.83, 0.8, 0.75
|
0.76, 0.6, 0.02
|
||||||
],
|
],
|
||||||
borderColor: '#4bc0c0',
|
borderColor: '#4bc0c0',
|
||||||
backgroundColor: '#4bc0c0',
|
backgroundColor: '#4bc0c0',
|
||||||
@ -1289,11 +1285,11 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'System',
|
label: 'System',
|
||||||
data: [
|
data: [
|
||||||
0.02, 0.02, 0.12, 0.17,
|
0.15, 0.2, 0.2, 0.18,
|
||||||
0.17, 0.17, 0.17, 0.17,
|
0.19, 0.18, 0.19, 0.2,
|
||||||
0.17, 0.17, 0.17, 0.17,
|
0.19, 0.19, 0.19, 0.19,
|
||||||
0.17, 0.16, 0.17, 0.17,
|
0.19, 0.19, 0.18, 0.17,
|
||||||
0.17, 0.17, 0.16
|
0.2, 0.16, 0.01
|
||||||
],
|
],
|
||||||
borderColor: '#ff6384',
|
borderColor: '#ff6384',
|
||||||
backgroundColor: '#ff6384',
|
backgroundColor: '#ff6384',
|
||||||
@ -1307,11 +1303,11 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'User',
|
label: 'User',
|
||||||
data: [
|
data: [
|
||||||
0.02, 0.02, 0.17, 0.26,
|
0.42, 0.47, 0.48, 0.51,
|
||||||
0.24, 0.21, 0.22, 0.21,
|
0.51, 0.52, 0.49, 0.52,
|
||||||
0.22, 0.23, 0.22, 0.22,
|
0.52, 0.52, 0.51, 0.53,
|
||||||
0.22, 0.23, 0.22, 0.22,
|
0.51, 0.52, 0.49, 0.5,
|
||||||
0.23, 0.22, 0.22
|
0.52, 0.12, 0.03
|
||||||
],
|
],
|
||||||
borderColor: '#4bc0c0',
|
borderColor: '#4bc0c0',
|
||||||
backgroundColor: '#4bc0c0',
|
backgroundColor: '#4bc0c0',
|
||||||
@ -1320,11 +1316,11 @@ vus_max........................: 50 min=50 max=50
|
|||||||
{
|
{
|
||||||
label: 'System',
|
label: 'System',
|
||||||
data: [
|
data: [
|
||||||
0.02, 0.02, 0.13, 0.21,
|
0.15, 0.29, 0.37, 0.44,
|
||||||
0.24, 0.26, 0.26, 0.22,
|
0.43, 0.46, 0.42, 0.47,
|
||||||
0.23, 0.26, 0.24, 0.26,
|
0.47, 0.45, 0.46, 0.46,
|
||||||
0.26, 0.25, 0.26, 0.26,
|
0.41, 0.46, 0.39, 0.39,
|
||||||
0.26, 0.26, 0.26
|
0.42, 0.11, 0.02
|
||||||
],
|
],
|
||||||
borderColor: '#ff6384',
|
borderColor: '#ff6384',
|
||||||
backgroundColor: '#ff6384',
|
backgroundColor: '#ff6384',
|
||||||
@ -2292,13 +2288,13 @@ Here are the final req/s results for each framework against PgSQL database.
|
|||||||
borderColor: "#0f766e",
|
borderColor: "#0f766e",
|
||||||
backgroundColor: "#0f766e",
|
backgroundColor: "#0f766e",
|
||||||
data: [
|
data: [
|
||||||
30, 575, 674, 684, 617, 668, 634, 638, 647,
|
50, 371, 331, 391, 475, 450, 464, 464, 467, 450,
|
||||||
621, 662, 661, 670, 659, 617, 672, 644, 653,
|
447, 467, 467, 455, 451, 458, 463, 485, 470, 476,
|
||||||
623, 606, 663, 650, 634, 666, 625, 652, 650,
|
449, 481, 485, 461, 476, 442, 455, 474, 454, 456,
|
||||||
671, 651, 617, 598, 620, 624, 626, 602, 657,
|
439, 478, 472, 436, 473, 453, 463, 471, 456, 455,
|
||||||
646, 649, 650, 638, 669, 640, 639, 636, 628,
|
439, 470, 456, 473, 465, 459, 468, 471, 475, 474,
|
||||||
636, 654, 651, 668, 643, 663, 645, 644, 618,
|
444, 484, 469, 466, 468, 448, 477, 449, 443, 482,
|
||||||
575, 627, 622, 660, 643, 644, 637, 626, 413
|
444, 452, 432, 374, 1
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@ -2389,15 +2385,14 @@ Here are the final req/s results for each framework against PgSQL database.
|
|||||||
borderColor: "#0f766e",
|
borderColor: "#0f766e",
|
||||||
backgroundColor: "#0f766e",
|
backgroundColor: "#0f766e",
|
||||||
data: [
|
data: [
|
||||||
34, 277, 442, 502, 566, 530, 612, 611, 593, 630, 577,
|
734, 921, 803, 822, 870, 809, 859, 751, 834, 825,
|
||||||
606, 619, 529, 568, 567, 599, 606, 559, 567, 557, 613,
|
786, 779, 811, 928, 869, 802, 802, 802, 832, 802,
|
||||||
604, 558, 617, 580, 607, 586, 581, 615, 564, 610, 612,
|
798, 824, 768, 845, 825, 762, 860, 758, 812, 813,
|
||||||
576, 596, 561, 610, 602, 561, 616, 571, 612, 604, 577,
|
808, 783, 772, 797, 831, 835, 799, 781, 844, 824,
|
||||||
586, 593, 595, 598, 566, 599, 592, 589, 585, 590, 603,
|
787, 801, 769, 819, 799, 774, 837, 776, 837, 826,
|
||||||
596, 608, 580, 571, 580, 583, 598, 606, 541, 581, 575,
|
821, 776, 791, 816, 838, 792, 900, 795, 815, 807,
|
||||||
595, 580, 591, 625, 577, 584, 601, 591, 585, 592, 620,
|
781, 819, 729, 848, 861, 839, 872, 762, 796, 902,
|
||||||
598, 574, 598, 571, 599, 596, 592, 603, 590, 593, 578,
|
790, 791, 791, 830, 815, 835, 832, 583
|
||||||
599, 585, 113
|
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -70,11 +70,8 @@
|
|||||||
title: Vuetify Admin
|
title: Vuetify Admin
|
||||||
date: 11/2020
|
date: 11/2020
|
||||||
repo: okami101/vuetify-admin
|
repo: okami101/vuetify-admin
|
||||||
demo: https://va-demo.okami101.io/
|
|
||||||
docs: https://www.okami101.io/vuetify-admin
|
|
||||||
|
|
||||||
- name: laravel-rad-stack
|
- name: laravel-rad-stack
|
||||||
title: Laravel RAD Stack
|
title: Laravel RAD Stack
|
||||||
date: 10/2021
|
date: 10/2021
|
||||||
repo: adr1enbe4udou1n/laravel-rad-stack
|
repo: adr1enbe4udou1n/laravel-rad-stack
|
||||||
demo: https://laravel-rad-stack.okami101.io/
|
|
||||||
|
@ -74,8 +74,8 @@
|
|||||||
{{ end }}
|
{{ end }}
|
||||||
<div class="flex items-center justify-between">
|
<div class="flex items-center justify-between">
|
||||||
<div class="flex items-center gap-4">
|
<div class="flex items-center gap-4">
|
||||||
<img src="/kube.png" width="30" height="30" alt="Kubernetes"
|
<img src="/talos-logo.svg" width="30" height="30" alt="Talos Linux"
|
||||||
title="Run on K3s over Hetzner Cloud" />
|
title="Run on Talos Linux over Hetzner Cloud" />
|
||||||
</div>
|
</div>
|
||||||
<div class="hidden lg:block">
|
<div class="hidden lg:block">
|
||||||
{{/* Copyright */}}
|
{{/* 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