HNHacker News
TopNewBestAskShowJobs

matt42

1,548 karma · joined September 24, 2013

submissionscomments
matt42··on TechEmpower Framework Benchmarks: Round 20
To me there is 3 main points:

  - Even if it's JS, just-js make almost no use of dynamic memory allocations.
  - The authors rewrote himself a postgresql driver that support batching request.
  - it wraps high performance c++ libraries
Even if the techempower implementation is far more verbose and complex than mainstream JS framework, the amount of work behind just-js and its preformances are just impressive!
matt42··on Moderna Covid vaccine candidate almost 95% effective, trials show
I don't understand why when you say "I have covid" people want the proof that you have it and ask you "did you do the test ?". I personally think I got it twice and never did any test. Just had symptoms I never had before in the 2 waves we had in france, just after meeting persons who also got seek at the same time. This is enough coincidence for me to think I have covid.

I also think that this reasoning may be more accurate that the official not very accurate covid tests.

Doing this reasoning myself also saved me money and the 4h waiting queue to do the test (the last thing I want to do when I have fever).

On the other side, I know people who had symptoms, tested negative (and trusted the test) and still when out to meet (and maybe contaminate) friends or colleagues.

matt42··on Stupid mistakes I made while building my first startup
or just run npm test / make test locally without setting up anything. But I feel like writting the tests takes usually more time than setting up CI/CD.
matt42··on Supabase-JS 1.0 Launched
Very interesting, I really think that http APIs are just a user management layer that could be easily abstracted away now that we can do so many things client-side.

How do you handle permissions ? or how do you pervent a clients to erase the database ?

matt42··on How to Get Promoted
This is really depressing. How do we stop this cynical game ? is they example of successful companies promoting the right people ?
matt42··on GCC Automatic Parallel Compilation Viability Results Help Up to 3.3x
Projects using templates and heavy metaprogramming often see most of the compile time spent in template instantiation, not in link time. For this kind of projects I think this would help.
matt42··on GCC Automatic Parallel Compilation Viability Results Help Up to 3.3x
Great that C++ compiler teams are working on reducing C++ compile time. The next great feature I think would be a game changer is caching the result of compilation (templates and binary code). A fine grained cache acting at the level of a line (or a function if it's too hard) would save an incredible amount of time to C++ devs, while also simplifying build systems. This would also stop engineers from losing days trying to speedup their build.
matt42··on Costs of running a Python webapp for 55k monthly users
What http server do you use ? Are they static images ?
matt42··on Costs of running a Python webapp for 55k monthly users
And 2.5 per minute
matt42··on React is becoming a black box
Is there any doc about how this caching is implemented ? I still don't understand why we need to feed this dependency array to have an up to date version of the count variable.
matt42··on React is becoming a black box
I love the way crank is using generators to get rid of the react complexity.... Did not know about crank, thanks for the link.
matt42··on Lithium ranked the highest performance web application platform
This is the official continuous techempower benchmark, run by techempower on the exact same environment than the techempower "official rounds". The only diff I'm aware of is that there is more manual review and check for rounds than for continuous benchmarks. Here is more info about it here:

From https://www.techempower.com/blog/2018/06/06/framework-benchm...:

We have already seen tremendous social adoption of the continuous benchmarking results. For selfish reasons, we want to continue creating and posting official rounds such as today's Round 16 periodically. (Mostly so that we can use the opportunity to write a blog entry and generate hype!) We ask that you humor us and treat official rounds as the super interesting and meaningful events that they are. Jokes aside, the continuous results are intended for contributors to the project. The official rounds are less-frequent snapshots suitable for everyone else who may find the data interesting.

matt42··on Lithium ranked the highest performance web application platform
My motivation in writing yet another web framework was to get pure performance while providing maintainability of more dynamic languages. Check the implementation of lithium, it is one of the most concise implementation of TFB: https://github.com/TechEmpower/FrameworkBenchmarks/blob/mast...
matt42··on Lithium ranked the highest performance web application platform
The frameworks are downloaded by dockerfiles provided by the framework maintainers, and since there is hundreds of frameworks, this is a bit tedious to manually get all URLs...

But anyway, I'm pretty sure all framework maintainers will rush to provide all the info Techempower need to add a link to their website..

matt42··on Lithium ranked the highest performance web application platform
yes, it has been discused already to increase the number of connections. But still, several thousands of simultaneous connections is still ok for the best performing frameworks...
matt42··on Lithium ranked the highest performance web application platform
Sadly seastar has no implementation of this benchmark. I had a quick look at the website and it seams that seastar is much more low level (it does not provide a http parser) and more generic that lithium, which is focused on simplifying the writing of HTTP APIs.
matt42··on Lithium ranked the highest performance web application platform
I'll write a post later explaining how I reached those performances, several people already asked for it.
matt42··on Lithium ranked the highest performance web application platform
a kqueue port should be ok. I'll add an issue for it.
matt42··on Lithium ranked the highest performance web application platform
The epoll code use is very small, few hundreds of LOC (but is at the very center of the framework since it runs the event loop), actually writing it from scratch was better to understand the mechanism, to optimize it and to adapt it for non blocking sql.
matt42··on Lithium ranked the highest performance web application platform
I would say the profiler output is the best source of information. Lithium is not using black magic at all. Actually on large framework like lithium, performance problems come more from obvious errors that get hiden in the quantity of code than in code that you did not crazy optimize.

Only the profiler will tell you if there is a hidden malloc that is slowing down all the rest, or a inefficient datastructure, or ...

There is probably lot of non optimized code in lithium, it just has no impact (or if it has I still has to find it).

That said, for other kind of software (usually more CPU bound), going down to assembly or using SIMD can be the only way to get good perfs.

matt42··on Lithium ranked the highest performance web application platform
Yes, this is only physical. The cloud env (Azure) only run once every 1 or 2 months I think. On the official rounds they do both.
matt42··on Lithium ranked the highest performance web application platform
Hi Brian, can't wait for round 20 then :D.
matt42··on Lithium ranked the highest performance web application platform
arf. ok. It's probably the mods who unflagged it.
matt42··on Lithium ranked the highest performance web application platform
omg...
matt42··on Lithium ranked the highest performance web application platform
Yes zero cost is subjective. It has a cost at least at compile time. But you can see metamap is a like loop unrolling for objects (if you think loop unrolling is zero cost then metamap too).
matt42··on Lithium ranked the highest performance web application platform
I think I need to write a blog post to do a retrospective on what I learned writing iod, silicon, lithium (and vpp, a small image processing lib). There is so much to tell.

Just to be short, here is my phylosophy:

   - don't think too much when you write it the first time, just do it quick. Do all the mistakes and ugly code first and then rething/rewrite things when it can actually simplify the codebase. Big refactors are much more productive and successful than big premature design thinking.
   - Only expose the complexity that the user need. Simple things should stay simple even if we can do more complex stuff. Look for simplicity everywhere.
   - Profile before optimizing, the bottleneck is never where you think it is.

For you question about metaprogramming, it is used yes. The core of the framework is build around a compile time key/value map that unroll json and get/post parameter de/serialization at compile time [1] so no dynamic dictionary involving costly malloc is needed.

[1] https://github.com/matt-42/lithium/tree/master/libraries/met...

matt42··on Lithium ranked the highest performance web application platform
And back on the frontpage.. I don't understand HN ranking algorithm.
matt42··on Lithium ranked the highest performance web application platform
I'll report this to the benchmark maintainers.
matt42··on Lithium ranked the highest performance web application platform
I'm wondering why this post got suddenly removed from the front page...
matt42··on Lithium ranked the highest performance web application platform
I had a look at the video, but I don't think there is backpresure in this benchmark since there is only 512 connections max and each connections wait for the server response before sending a new request. So in other words the load generator never send more request/s that the server is able to handle. (tell me if I missunderstood backpressure)
Page 1 of 5Next →