# Benchmark results

_120 measurements across 40 cells_

## `/articles`

| target | workers | req/sec | p50 (ms) | p99 (ms) | RSS (MB) | req/sec/GB |
|--------|--------:|--------:|---------:|---------:|---------:|-----------:|
| crystal | 1 | 16210 | 4.04 | 4.72 | 25 | 673550 |
| go | 1 | 3668 | 17.42 | 21.88 | 32 | 115812 |
| rails | 1 | 486 | 126.85 | 285.76 | 336 | 1480 |
| rails-int | 1 | 485 | 126.04 | 303.05 | 305 | 1628 |
| ruby | 1 | 3823 | 16.75 | 18.34 | 101 | 38655 |
| ruby-int | 1 | 3020 | 21.15 | 24.37 | 96 | 32067 |
| rust | 1 | 37588 | 1.68 | 3.11 | 17 | 2265706 |
| typescript | 1 | 4981 | 12.15 | 22.06 | 387 | 13174 |

## `/articles/1`

| target | workers | req/sec | p50 (ms) | p99 (ms) | RSS (MB) | req/sec/GB |
|--------|--------:|--------:|---------:|---------:|---------:|-----------:|
| crystal | 1 | 23263 | 2.62 | 3.49 | 23 | 1046381 |
| go | 1 | 4805 | 13.28 | 17.70 | 33 | 149262 |
| rails | 1 | 471 | 131.60 | 283.16 | 352 | 1370 |
| rails-int | 1 | 478 | 129.24 | 247.94 | 315 | 1552 |
| ruby | 1 | 4349 | 14.68 | 16.84 | 107 | 41599 |
| ruby-int | 1 | 3596 | 17.74 | 20.60 | 105 | 35006 |
| rust | 1 | 53210 | 1.16 | 2.25 | 17 | 3123276 |
| typescript | 1 | 6761 | 9.17 | 14.95 | 387 | 17903 |

## `/articles/new`

| target | workers | req/sec | p50 (ms) | p99 (ms) | RSS (MB) | req/sec/GB |
|--------|--------:|--------:|---------:|---------:|---------:|-----------:|
| crystal | 1 | 45679 | 1.31 | 1.68 | 21 | 2219138 |
| go | 1 | 10840 | 3.01 | 40.81 | 34 | 323677 |
| rails | 1 | 691 | 89.92 | 196.26 | 360 | 1964 |
| rails-int | 1 | 690 | 90.10 | 205.63 | 328 | 2155 |
| ruby | 1 | 6714 | 9.47 | 11.77 | 138 | 49987 |
| ruby-int | 1 | 5395 | 11.76 | 14.07 | 122 | 45454 |
| rust | 1 | 91630 | 0.62 | 1.57 | 18 | 5227461 |
| typescript | 1 | 17435 | 3.68 | 4.33 | 387 | 46160 |

## `/articles.json`

| target | workers | req/sec | p50 (ms) | p99 (ms) | RSS (MB) | req/sec/GB |
|--------|--------:|--------:|---------:|---------:|---------:|-----------:|
| crystal | 1 | 36238 | 1.68 | 2.17 | 21 | 1780955 |
| go | 1 | 14279 | 4.41 | 7.08 | 34 | 434093 |
| rails | 1 | 868 | 74.25 | 91.72 | 361 | 2460 |
| rails-int | 1 | 908 | 69.89 | 94.87 | 341 | 2723 |
| ruby | 1 | 5721 | 11.02 | 14.07 | 142 | 41165 |
| ruby-int | 1 | 4602 | 13.81 | 16.26 | 124 | 38027 |
| rust | 1 | 98521 | 0.52 | 1.63 | 18 | 5573305 |
| typescript | 1 | 10595 | 5.80 | 11.53 | 388 | 27978 |

## `/articles/1.json`

| target | workers | req/sec | p50 (ms) | p99 (ms) | RSS (MB) | req/sec/GB |
|--------|--------:|--------:|---------:|---------:|---------:|-----------:|
| crystal | 1 | 48159 | 1.28 | 1.67 | 21 | 2326236 |
| go | 1 | 14722 | 4.32 | 7.11 | 34 | 445763 |
| rails | 1 | 1298 | 46.59 | 212.09 | 413 | 3217 |
| rails-int | 1 | 1312 | 46.02 | 211.36 | 391 | 3435 |
| ruby | 1 | 6592 | 9.57 | 12.16 | 147 | 45813 |
| ruby-int | 1 | 5242 | 12.15 | 14.54 | 134 | 40062 |
| rust | 1 | 126920 | 0.46 | 1.29 | 18 | 7176739 |
| typescript | 1 | 12360 | 4.94 | 13.00 | 388 | 32637 |

