SnapFire FSR Requests per second benchmarks

Responses read in full per second at each number of concurrent clients.

Throughput in req/s: Responses read in full per second. Measured on Apple M4 Pro (14 cores).

Higher is better for requests per second. Lower is better for latency, memory, build time and size. Bold marks the best figure in a row and every figure within 5% of it.

home: `/`

Clientsfsrnextjssveltekitnuxtleptosdioxus
142,5227,63213,49610,98322,02010,389
8147,5708,74126,36929,17099,84534,585
32173,7868,54128,77030,133155,97536,077
64173,4218,55732,11430,201162,62235,995
128171,5518,43032,07929,283164,65336,091
256170,5718,40429,43528,854169,07936,246

The landing page: a hero and three features, no data.

counter: `/counter`

Clientsfsrnextjssveltekitnuxtleptosdioxus
142,4037,60214,69410,86523,91011,068
8148,0678,62330,50228,784102,43534,746
32174,0028,64431,19629,812157,53436,088
64172,7758,63231,75629,670163,47836,238
128171,4688,54732,01629,000167,74336,344
256169,9718,45129,17628,392168,05136,604

A fixed page holding one component that hydrates in the browser.

catalog: `/products?sort=price`

Clientsfsrnextjssveltekitnuxtleptosdioxus
16,9728265,8721,7654,1383,330
837,3999046,4412,05523,15714,066
3260,1238816,4871,99935,33013,006
6459,2798656,4361,86835,40813,013
12858,8588516,1671,92935,04413,049
25657,8698306,1561,91633,81413,002

All 48 products, sorted by the query.

product: `/products/cedar-lantern`

Clientsfsrnextjssveltekitnuxtleptosdioxus
115,5151,32311,0313,09612,0998,664
871,2221,55813,7903,82955,81530,738
32123,3901,51413,8003,89393,88232,289
64123,0351,45913,6243,79399,87232,142
128124,1441,48113,1713,722102,79032,175
256124,7131,51812,6563,696102,06532,049

One product by its slug, with four related products.

search: `/search?q=pack`

Clientsfsrnextjssveltekitnuxtleptosdioxus
112,4591,2919,6782,7329,0996,815
860,9661,48211,3173,37945,69125,539
32105,6751,47211,5203,34478,16626,985
64105,7651,40211,4403,24679,93226,811
128106,4101,41211,1463,23979,56426,927
256107,3951,41410,7143,16980,44926,017

Products whose name or tag matches the query.

missing: `/products/nope`

Clientsfsrnextjssveltekitnuxtleptosdioxus
119,4251,14912,6321,92416,64410,177
884,1811,29716,1272,39867,28932,835
32139,6291,28016,1132,420105,31934,701
64144,2271,23615,8892,367110,11034,345
128147,6821,24315,5762,319113,40934,953
256153,1701,25414,9612,329115,66935,108

A slug with no product, answered 404.

api: `/api/products`

Clientsfsrnextjssveltekitnuxtleptosdioxus
122,5066,41017,40222,71530,81018,327
8107,3076,78825,45140,578127,99879,967
32164,1266,71225,33842,368172,697149,825
64165,7026,71025,34941,314171,057163,376
128167,5876,71724,81439,999169,373170,573
256170,7506,71023,75539,614168,457171,040

The catalog as JSON.

primes: `/compute/primes?n=50000`

Clientsfsrnextjssveltekitnuxtleptosdioxus
1native 8,9632039632,4351,4988,2186,203
8native 48,5231,3101,0612,7681,83542,04329,294
32native 84,0041,9371,0622,5641,74273,40931,566
64native 83,0551,8941,0492,5311,72073,76332,048
128native 83,6661,8721,0472,7541,81573,73731,923
256native 84,4041,8631,0542,7661,81573,48931,952

A sieve of Eratosthenes up to the query's n: tight numeric loops over an array.

Under FSR's figure, marked native: the same page with its loader calling the Rust in shared/compute.rs through #[native], the code Leptos and Dioxus run. The view and the render are FSR's either way. It is ranked with the other figures.

report: `/compute/report?orders=5000`

Clientsfsrnextjssveltekitnuxtleptosdioxus
1native 12,3076211,3728,6653,05310,4997,751
8native 61,8834,3801,55110,1833,84151,33830,923
32native 110,0276,5961,56210,1473,78988,26532,928
64native 110,7226,4361,52310,0043,64590,79033,102
128native 110,9286,5411,4879,7873,58992,00432,953
256native 112,5096,5551,4819,5223,64592,90332,923

Generated orders aggregated per product, sorted by revenue with a comparator and formatted.

Under FSR's figure, marked native: the same page with its loader calling the Rust in shared/compute.rs through #[native], the code Leptos and Dioxus run. The view and the render are FSR's either way. It is ranked with the other figures.

words: `/compute/words?passes=20`

Clientsfsrnextjssveltekitnuxtleptosdioxus
1native 516139433577542542520
8native 3,7469584546015554,0373,890
32native 5,7491,4764505945515,9005,180
64native 5,7461,4554496015455,9135,057
128native 5,7291,4504525915555,8865,172
256native 5,7101,4494505184895,8185,081

Word frequencies over a built-up text: splitting, lowercasing and counting in an object.

Under FSR's figure, marked native: the same page with its loader calling the Rust in shared/compute.rs through #[native], the code Leptos and Dioxus run. The view and the render are FSR's either way. It is ranked with the other figures.

table: `/table?rows=500`

Clientsfsrnextjssveltekitnuxtleptosdioxus
11,5001671,0921,1721,5181,368
810,7761721,1591,28710,3118,872
3216,1291811,1321,24314,21710,834
6415,8931841,1501,22314,01310,763
12815,6981861,1571,23314,13710,686
25615,7241691,1601,24814,12710,803

500 rows rendered from simple data: the cost is the render, not the loader.