Yes but that is not what is presented (a B+ tree is not a B tree even with minor modifications) and it changes the complexity of your other update operations drastically. The thing that grates me (as someone that has written a dozen or so different tree structures) is that this one is presented as a particularly good one, and I think it excels at almost nothing, hence its obscurity.
I would hazard a guess that a regular n-ary tree would outperform the OP tree in many usage scenarios with no extra effort, and with a number of B+ tree variants being strictly better at the cost of more effort.
You are using N in a different sense than I am. Unless I'm reading the tree description incorrectly, N is the size of the tree itself, not the number of children.
It does? Feels like an O(n) scan every time you need to query the children of a node is a nonstarter for most applications (the readme is strangely optimistic about this point). Plenty of cache friendly tree implementations out there, and this one seems actually cache hostile with few benefits in my mind aside from ease of implementation.
Also, I write a lot of code that runs on a gpu, and the claim that this tree is somehow gpu friendly I find particularly dubious.
I understand OP but I haven't seen a single logging implementation that would inline the entire implementation in a macro and I suspect the author of the blog post hasn't either.
When something is advertised as a guide to "study pure math," why is everyone's kneejerk reaction to recommend that the guide include resources that aren't "pure math."
You're splitting hairs. If the energy is needed to stave away a 51% attack, that's the energy needed to support the single digit tps monstrosity you have. As for the 500 billion in value, I doubt if everyone liquidated their positions today it'd amount to a figure remotely close to that.
What a terrible take. We should also make it legal to throw rocks in people's windows to ensure all glass is tempered. We should also make it legal to steal so that all stores have sufficient security presence. What kind of silly logic is that?
> you skip the "helper" function that's breaking things.
Yea ok, I'm just going to assume this helper function added framing unless told otherwise. Where in this post did you even read that framing and payload data were conflated (not to mention that there are better protocols that include framing metadata).
Folks, if you send raw PB over the wire in a protocol without framing, it _needs_ to be length prefixed somehow. This type of "bug" isn't an unreasonable thing to do, nor uncommon even. If I had a gripe, it's that I hate varints. Lots of wasted cycles to save not that many bytes in the grand scheme of things, especially when you consider other forms of compression layered on top, MTU, etc.
I have casually evaluated Godot so I am moderately aware of its capabilities. The thing I did not evaluate well though is how well structured its data and asset pipelines are. The big thing a AAA engine needs (aside from rendering, console support, and perf and all that) is the ability to scale production to hundreds or thousands of programmers and artists. The ability of an engine to scale in this way is generally learned painfully by doing, and I'm looking forward to see how Godot fares on larger scale projects over time.
As someone in the industry, those games don't actually fit my traditional mental model of what "AAA" means. AAA doesn't directly correlate with revenue for example. The general rule of thumb I kind of go by is that a game is likely to be "AAA" if it uses motion captured skeletal and facial animation sequences.
IMO read the damn header file and abide by the api contract. A const pointer type suggests nullability, and possibly even pointer arithmetic is permissible.
The simplest counterexample is just to consider vectors in 2D. It is not possible in general to construct a third vector perpendicular to two other vectors unless those other vectors are collinear or anitcollinear. The notion of an exterior product, represented as a signed area subtended by the two vector arguments of the operator sits in 2 space nicely however. In general, signed areas and M dimensional signed volumes are embeddable in N dimensional subspaces for M < N. The notion of a signed volume is directly tied to both the exterior product and the determinant. In higher dimensions, the cross product is equally unhelpful, given that for two vectors, the set of mutually orthogonal vectors abiding by the right hand rule is often infinite.
I forget who it was, but I think it was Ghrist that mentioned in his TDA book that expectations were to be extremely tempered before trying to apply TDA to a given problem domain.
Sync IO is probably fine on Windows with the exception of CloseHandle, in which case Windows Defender or other AV will invoke a file filter in the kernel's file I/O filter stack to scan changes for data recently written to the file. A common approach used in Rust, version control software, and other runtimes is to defer file closing to a different thread to keep other I/O and user-facing threads responsive. All that said, I think IOCP on Win32 is a far superior asynchronous programming model to the equivalent APIs on Linux which feel far less usable (with more footguns).
My point is that this site is not a good example to use for showing SSR in a good light. Logically, this doesn't mean the converse of the statement is implied (that if this site didn't use SSR, it would be good).