Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
tele_ski
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
7 ms
·
31.
▲
by
tele_ski
5y ago
I think this might be the best explanation I've read of why io_uring should be better than epoll since it effectively collapses the 'tell me when this is ready' with the 'do action' part. That was the really enligh
32.
▲
by
tele_ski
5y ago
Really nice write up! I'm excited to see more coroutine tutorials and guides come out, I think this C++20 feature has huge potential to make C++ easier to use over the next decade. I will also say I was a bit surprised to see libcoro
33.
▲
by
tele_ski
5y ago
https://github.com/jbaldwin/liblifthttp I created a C++17 HTTP client which is backed by curl and libuv (linux only! sorry windows). I think a lot of people have done this or something similar but almost all of the on
34.
▲
by
tele_ski
5y ago
This is great advice and I wish it was the standard. I had this problem on one of my projects so I used a githook to basically paste in actual compiled example files from the test suite on committing. It does mean the actual readme is more
35.
▲
by
tele_ski
6y ago
did you try make -j16 since you have 16 cores? -j with no number means spawn as many parallel jobs as possible which could be hundreds or thousands depending on the project, I learned this the hard way a while ago myself when I used $(nproc
36.
▲
by
tele_ski
6y ago
I think AVRO is fairly well designed overall, but JSON schemas? If you need deeply nested objects just look away, it becomes unintelligible when trying to understand the schema with any real nesting. The company I was at used it fairly we
37.
▲
by
tele_ski
6y ago
Oh good to know! I forgot it's hidden until that section is enabled. Does feel like a feature that should be top level, OSIT!
38.
▲
by
tele_ski
6y ago
"Require branches to be up to date before merging" is a check box under branch protection rules, I always turn it it. It's under the required status checks section.
39.
▲
by
tele_ski
6y ago
I always go into each new repo I create and turn off the ability to merge and require commits to be up to date with master, I think this might get what you want?
40.
▲
by
tele_ski
6y ago
The curl easy api perform call is just a blocking wrapper around the curl multi async interface afaik, so I actually think it makes sense.
41.
▲
by
tele_ski
6y ago
Adding and updating submodules feels so straightforward but... removing yeah bring out the big guns, I can never get it done right and have to resort to searching
42.
▲
by
tele_ski
6y ago
Maybe it should be called zero parse and zero copy? Seems like two different terms...
43.
▲
by
tele_ski
6y ago
Yeah I understand that, but if you are going for identical performance characteristics of how epoll would normally be used then I would expect it to re-register. Thats all I was getting at.
44.
▲
by
tele_ski
6y ago
Normally I'd expect an epoll implementation to epoll_ctl to make sure the socket can be written to without blocking. In this benchmark it probably makes no difference but I would think it would make the results a little more inline wi
45.
▲
by
tele_ski
6y ago
Adding automation and code coverage to my c++17 libraries I've been refining. I've used them for years but never spent the time to polish them, it really does seem to make them feel more substantial when the CI completes on a com
46.
▲
by
tele_ski
6y ago
Nice, reading through the epoll implementation shouldn't it re-register to make sure the send() call won't block? Looks like it only non-blocks on the accept socket and then a single read register
47.
▲
by
tele_ski
6y ago
Interesting that your build times are slower with clang. I've found on most of my projects clang is roughly 30% faster to compile in debug, but release I haven't seen a huge difference between the two.
48.
▲
by
tele_ski
7y ago
That seems like it would be a performance hit to actively make it different? That seems like a very weird and strange design decision if true
49.
▲
by
tele_ski
7y ago
I'd prefer up/sideways/down. Sometimes I watch things that are brainless, they aren't thumbs up worthy but they are not totally thumbs down either. But if this was hiring a sideways is always down in my book, so I could
50.
▲
by
tele_ski
7y ago
I'm also in this camp, I did read through at the time some of the arguments for this syntax and it allows for some elegant chaining of awaits and other things I can't recall, but I still can't get over the fact that it looks
51.
▲
by
tele_ski
7y ago
I personally don't understand avro, are there tools to write the schemas easier? The json format is very difficult to read and it just seems so clunky compared to protobuf.
52.
▲
by
tele_ski
7y ago
Our build time on Linux container is 8 minutes, but it's a few hours on macOS using docker containers. I haven't dug into it but the hypervisor seems to be single threading the normally multicore compile.
53.
▲
by
tele_ski
7y ago
Thats fair, always need to optimize for your use case. I run thousands of small transactions per second so no keep-alive would absolutely kill us.
54.
▲
by
tele_ski
7y ago
So there is no keep alive in these tests including lb to application? Makes sense why the qps is so low on a single core for all versions tested if nginx is having to reopening a new socket each time to zerohttpd. Not sure how useful this
55.
▲
by
tele_ski
8y ago
Hermetic Builds. ... Our builds are hermetic, meaning that they are insensitive to the libraries and other software installed on the build machine. Instead, builds depend on known versions of build tools, such as compilers, and dependencies
56.
▲
by
tele_ski
8y ago
Since this is C++, what about using a thread_local Arena for the storage? Then you could simplify the API a bit and not re-allocate too! I also agree, the parent_fd is trivial but it isn't as easy to use as no parameter.
57.
▲
by
tele_ski
8y ago
I think this is an awesome article and a really cool idea on how the author incremetally improved their code for performance. But is the API as easy to use for a programmer? I find a complex API into a function makes it much harder to und
58.
▲
by
tele_ski
8y ago
Generally yes. You just 'move' pointers through the callbacks and expose RAII request objects to the end user, they don't see any of the ugliness underneath.
59.
▲
by
tele_ski
8y ago
I agree, curl is great but the API is very difficult to use. Self plug, I've built my own curl c++ wrapper [0] for making thousands of requests per second (libuv event loop driver) and I find a cleaner API gets new devs into it a lot e