115 ms·
Unpacking Cloudflare Workers CPU Performance Benchmarks
- PranaFlux 1y agoGrab the popcorn, the Vercel v Cloudflare drama unfolds
- horseradish7k 1y agocompetition is how customers get better products
- syrusakbary 1y agoI really appreciated that the tone of the article is about what can be improved, rather than dunking on the competition. That's what everything is about! PS: It's awesome to see improvements on the OpenNext implementation, that other providers can also reuse
- deleted 1y ago[deleted]
- skeptrune 1y agoI loved this! Good writeup and very mature response to lots of criticism they took online prior.
- synunlimited 1y agoSpeaking of `JSON` functions that can have drastic performance differences, V8 blog[0] recently had a post about improving `JSON.stringify` performance when you don't pass a `replacer` function. Some of the most used functions with performance pitfalls that are easy to trip into. 0: https://v8.dev/blog/json-stringify https://v8.dev/blog/json-stringify
- cmdhaus 1y ago[dead]
- nisten 1y agonextjs being 4 times slower latency wise than plain react or even vanilla js is pretty funny
- kentonv 1y agoThe benchmark cases are not comparable to each other. Each does totally different work. They are only meant to compare hosting providers.
- kentonv 1y agoCorrection: The author of the SvelteKit benchmark says it is designed to do the same work as the Next.js one: https://x.com/bmdavis419/status/1978242304432325041 https://x.com/bmdavis419/status/1978242304432325041 But the "vanilla" benchmark generates some 3x as much HTML and the react one generates half, so they aren't comparable.
- auxiliarymoose 1y agoKeep in mind that Theo said the Vanilla benchmark was running too fast so he made it "way way slower" so 4x is not representative of a direct comparison https://youtube.com/clip/UgkxvcydgHKf-76rZasr0ykMZZol57apKp9g https://youtube.com/clip/UgkxvcydgHKf-76rZasr0ykMZZol57apKp9...
- zeroq 1y agonextjs is spring of the web, it optimizes productivity rather than app speed. and whether you are more productive with it or not is completely up to you.
- bradleyg_ 1y agoWell played Cloudflare.
- orliesaurus 1y agocf has to hire people with obsession not benchwarmers that only activate when someone yells at them because of a twitter argument. there i said it. vercel only exists because cf got lazy. huge fan of CF, and if cloudflare had the attention to details that vercel has, there would be no vercel. fullstop. CFs docs, repos, video content but also code samples, sdks (lol all the mcp stuff) usually is subpar to vercel's. its really annoying that nextjs has to be forked and/or patched to work on cloudflare.
- weird-eye-issue 1y agoCF isn't lazy at all. Their docs often aren't that great but it's because they seem to be prioritizing launching new products and features
- nmfisher 1y agoOverall I'm quite positive towards core Cloudflare products like Tunnels, Workers, R2, KV etc, but a lot of newer products are often either thoroughly broken (e.g. Cloudflare AI) or unusable due to insufficient documentation (e.g. Email Routing). After being burned a few times, I think I'm going to ignore any new Cloudflare product for 12 months after stable release. If their products worked as advertised, I'd be willing to pay considerably more. I think their commitment to the free tier is hamstringing them a little bit.
- orliesaurus 1y agoI also got burned and yes I also feel this way about it, i.e. AutoRAG has huge issues too, not to mention the whole MCP/Agents suite of SDKs...
- weird-eye-issue 1y agoYeah I just use Workers and Durable Objects. Stuff like Queues built on DO is better to just use DO
- kordlessagain 1y agoRight. Cloudflare is an authorized man in the middle attack.
- Havoc 1y agoGood job on taking the L gracefully and doing something constructive about it
- pyrolistical 1y agoThis is why we need competition and independent benchmarks. This shames poor performing product/service into action.
- alhirzel 1y agoOnly if they care...
- aiisthefiture 1y agoWe already have independent benchmarks.
- sema4hacker 1y agoYes, competition is good and mergers and acquisitions are bad. It also shows why you always have to internally be comparing yourself to the competition and not be complacent, before someone independently does the comparison for you and you're embarrassingly caught with your pants down.
- hu3 1y agoMy take from this article is that SvelteKit is crazy fast and Next.js is a snail
- eastdakota 1y agoThat definitely is one not-wrong conclusion.
- FlyingSnake 1y agoI hope a pragmatic framework like SvelteKit, Astro or TanStack replace NextJS complexity vendors soon.
- rk06 1y agoReact router is ... an option. but tanstack is a the most promising one to change the status quo. With the rolldown update coming with vite 8, It is just a matter of time before next. js is forced to fix its issues
- mb2100 1y agoIndeed. Would you consider https://mastrojs.github.io https://mastrojs.github.io a "pragmatic framework"?
- zeroq 1y agoThis is great PR. Well done to whoever orchestrated that post.
- kentonv 1y agoThanks! This was 100% produced and orchestrated by engineers on the Workers team (including me).
- zeroq 1y agoWell, that only speaks better of higher ups who (a) offered you a space to that and (b) didn't micro managed you into something, like vercels hate piece. Again, well played, nice fix, nice writeup.
- eastdakota 1y agoBlog run by the engineering team. I wouldn’t even know how to veto a post if I wanted to. Not in our DNA.
- Waterluvian 1y agoIs there any secret beyond what I’m guessing is “hire the right people and then trust them”?
- mpeg 1y agoTo give a take from a happy cf customer – not only do they have a great engineering culture when it comes to writing blog posts and OSS but also the best customer service of any infra company I've ever used. The team, including kenton who wrote this post, are often available on discord to provide help and take in feedback about cf products, if you find a bug or have a problem you can often be talking directly to the engineer who looks after that product. I've made PRs and feature suggestions on cloudflare products that got accepted without much hassle / protocol Don't mean to put down others, but I receive better support from cf on an extremely small monthly bill (the free tier is too good) than I have got from a certain massive company's account managers on six figures a month bills.
- cendyne 1y agoAbsolute adoration for how this was published, broken down, and discussed. It really improves my trust in the workers team at Cloudflare.
- boarush 1y agoReading this really makes me wonder how does Chrome actually optimize for the plethora of devices running v8 (under Chrome). Definitely involves tricky decisions to be taken for great performance.
- l5870uoo9y 1y agoI am in the process of porting my web app[1] from NextJS hosted at Vercel to Astro/React hosted at Cloudflare, and something that particularly surprises me is that I can render a web app on every request at “the edge” and have response times of 100-200ms. That is almost as fast as fully static pages. I have also definitely noticed an improvement in Cloudflare Worker over the last few weeks; cold starts have practically disappeared, and they are significantly more stable in terms of response times. [1]: https://app.sqlai.ai/ https://app.sqlai.ai/
- steelbrain 1y agoHello! How are you collecting your edge workload to the database? Are you using cloudflare’s database? I’ve wanted to try out this edge hosting thing but because of the amount of round trips involved between the application and the database, the application performs worse on the edge. Thanks!
- l5870uoo9y 1y agoThe database is hosted on Railway. I have enabled Smart Placement that should, depending on request time, automatically use an endpoint closer to the database to speed it up. When requesting a route that includes a database request, the response time on the US east coast is around 200ms and closer to 1000ms in Denmark. I am hoping that the Smart Placement will work better when I go live with the app (still in beta) and that it mainly needs more traffic to calculate optimal endpoint placement.
- pjc50 1y agoSo a remote, authenticated DB connection over the internet? How many db queries per page generation does that generally work out as?
- l5870uoo9y 11mo agoMy app isn't database heavy; most pages renders without a single database call (user information stored in cookie) and the pages that do call the database contain maximum one call. Other data, like database schemas and subscription status, are requested in the background directly from the browser so it doesn't stall page rendering.
- aperture147 1y agoIt’s good that CF is actually trying to improve its platform instead of blaming others for smearing its product. Still, the breakneck pace is a mixed blessing. Things change so fast it’s hard to keep up, and launches often outrun polish. The R2 Data Catalog still lacks Iceberg v3 support; Wrangler has shifted dramatically in just a few months; and Pages seems to be on the way out, leaving me with Workers Assets that are painful to migrate. Configs that worked in Wrangler 3 didn’t carry over cleanly to Wrangler 4, and it feels like Wrangler 5 will introduce yet another interaction model.
- itake 1y agoWhere do you see that "pages seems to be on the way out"? I use pages for a few projects...
- aperture147 1y agoCF used to encouraged people to move to Workers instead of using Pages. They recently removed the message in their landing page that said so (just checked, you could visit Wayback Machine to verify), so I guess Pages will still be available anyway. Btw the best thing that Pages gives out is allowing people to use different domain from another domain registry when Workers force user move their domain to CF.
- pjc50 1y agoWorkers require you to use CF as a domain registry? Where is that written and what possible reason do they give for it? That's quite an imposition.
- rajeevk 1y agoNot the domain registry but CF wants to manage the DNS to make it work. If you do not want them to manage your DNS and want to work by simply pointing your CNAME, they ask you start with their business plan ($250 / per month)
- youngtaff 1y agoNice bit of subtle shade here: > we chose instead to run our test client directly in AWS's us-east-1 datacenter, invoking Vercel instances running in its iad1 region (which we understand to be in the same building).
- jrpelkonen 1y agoGreat write up, focusing on facts without fingerpointing. But I must admit I was somewhat surprised Cloudflare was not already proactively monitoring and tuning the generation sizes. Configuring the generation sizes was table stakes for JVM performance tuning back in the day.
- ErikCorry 1y agoWe choose to be transparent when we fix stuff, even if it makes us look a bit silly :-) . We are certainly installing more logging and tracking of this sort of thing! In general I think the GC should auto-adapt as much as possible. It's a bit of an admission of defeat for the GC author if the users have to spend a lot of time tuning the parameters. What we are doing here is removing the tuning that was no longer correct, and allowing V8 more latitude to pick its own young gen size.
- jrpelkonen 1y agoI appreciate the candor, and I agree that auto-adaptation probably makes sense in this use case because the workloads are unknown and varied.
- noir_lord 1y agoNot silly at all - with such a massive surface even specialists on a part of it don't see all of their part all of the time :). Any dev who's been around a while has been bitten by many assumptions or straight blindspots many times. "Huh..that's weird" has been the entry point to some truly astounding ones over the years for me at least.
- era37 1y agoIt's pretty crazy how some video by a relatively small content creator snowballed into Cloudflare making meaningful changes and addressing platform issues
- NicoJuicy 1y agoAnd in just under 5 days, that's insanely fast
- kordlessagain 1y agoI'm sick of seeing Cloudflare marketing on here.
- graycat 1y agoFor garbage collection and the idea of assigning storage requests to different categories of (dynamic) storage .... Apparently part of the algorithm is based on the size of the storage being requested. Hmm. So, we have historical data of storage requests and for each (i) the size of the request, (ii) how long until the storage is freed, (iii) etc. .... Guessing about a bizarre case: It might be that on Monday many storage requests of certain small sizes have lifetime just a little longer than the decision to move the request to another category, i.e., the moving effort was inefficient, wasted. So, in simple terms, for an optimization, for each of the variables have both in the history and real time, make the variable values discrete, altogether may have for some positive integer n a few thousand different n-tuples of variable values; then for each n-tuple pick the best decisions (policies, etc.). Uh, unless this idea has already been tried.
- blackhaj7 1y agoKenton is a class act