matt42
matt42 on Hacker News
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!
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.
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.
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 ?
Posted by
matt42 on Tuesday November 03, 2020 @09:48AM
from the techradar.com dept.
Posted by
matt42 on Monday October 26, 2020 @09:26AM
from the matt-42.github.io dept.
This is really depressing. How do we stop this cynical game ? is they example of successful companies promoting the right people ?
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.
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.
What http server do you use ? Are they static images ?
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.
I love the way crank is using generators to get rid of the react complexity.... Did not know about crank, thanks for the link.
Posted by
matt42 on Saturday August 29, 2020 @08:44PM
from the open-std.org dept.
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.
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..
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...
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.
I'll write a post later explaining how I reached those performances, several people already asked for it.
a kqueue port should be ok. I'll add an issue for it.
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.
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.
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.
Hi Brian, can't wait for round 20 then :D.
arf. ok. It's probably the mods who unflagged it.
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).
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...
And back on the frontpage.. I don't understand HN ranking algorithm.