Part of what makes Hacker News fast is that the page only has 4-ish images (if you count the invisible gif that is used for indentation) and a tiny amount of JS.
I don't think that's true (but I also don't understand what is meant by architecture in this context).
There's a simple file upload form example in the Arc community repository. It's so slow that it would timeout on files smaller than 100K. I tried optimizing the POST request parsing, but could still only barely get Arc to handle file sizes of 5M.
Tried making a similar simple file upload form in Racket, and it runs way faster. But it shouldn't be surprising that some languages are less efficient than others, right?
I'm also not sure that most web applications are text-only. Many web applications send and receive other things that plaintext.
A long time ago I read a comment somewhere saying that Arc is interpreted (as in by a program itself written in MzScheme, instead of translated down to MzScheme), which struck me as odd but I didn't check back then, so now I finally went and looked through the Arc history[1] and release 0 already does the translation, so apparently that was just wrong. There can still be reasons why Arc could be slower, though, I remember PG's design called for overloading function calls so that e.g. hash table lookups could be written like function calls, and if implemented naively this could cost a slower than usual type check on each function call and prevent optimizations applied by the MzScheme/Racket compiler like perhaps function inlining. But just a different parsing infrastructure could explain it too (working on strings-as-vectors vs. lazy lists would make a large difference, but I couldn't get down far enough to see how that's implemented; srv.arc in parse-multipart-args uses regular expressions, not sure that's what you optimized?). Anyway, new code always has large potentials for optimization (early lisps were very slow, today's implementations are generally very fast; same was/is true for Java, JavaScript, ..).
What about the battle-tested Linux kernel? If you compile your racket apps to a native binary, you can run it directly on the Linux kernel, and benefit from 25 years of use in production! People deploy Golang and Rustlang apps everyday in prod using that approach it seems to work well for them. Note, both languages are younger than Racket.
Of course you can serve millions of users with Racket, like HN. But the JVM today is much better choice. The JVM's GC is world-class and the number of man-hours put in it is probably many orders of magnitudes more than that of Racket's.
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
FWIW, I've been staying away from Clojure because of the JVM. A lot of us are wearing the scars of the JVM battles!
[0]: https://blog.racket-lang.org/2018/01/racket-on-chez-status.h...
The difference with Python is probably bigger in programs with a big numeric part, and much smaller in programs with a lot of string. Take that number just as a general guide, not as a precise scaling factor.
Now you will.
Racket vs Python is a "common" comparison. I write the same comment once or twice per year :). (Probably because both are high level and have the batteries included. (The syntax is slightly different :) ))
https://salsa.debian.org/benchmarksgame-team/benchmarksgame/...
2) People show interest in just a few comparisons (much much fewer than are currently shown).
3a) Everything-vs-everything is available, here —
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
3b) Everything-vs-everything is available, here —
https://benchmarksgame-team.pages.debian.net/benchmarksgame/...
Can you explain why?
Because it's been used more in big prod envs? Or for reason intrinsic to the languages themselves? If the latter, which ones?