HN user

sbanach

102 karma
Posts0
Comments33
View on HN
No posts found.

With Java vs C++, the experience seems similar. In C++, memory allocation is slow, so you worry about memory allocation up front. In Java, GC is a pain so you worry about memory allocation up front. As Daniel points out, there are a few extra tricks available to native developers (eg vector instructions), so there's a small factor speed-up in best-practice C++ vs best-practice Java, but this is closing (eg the JIT increasingly uses vector instructions). Overwhelmingly the difference between a slow system and a fast system is appropriate choices of algorithms and architecture, not the language.

The compression format is really smart, there's a neat trick to make the logarithm calculation fast, and there's a concurrent thread handoff mechanism so you can swap out a histogram without disturbing the thread you're measuring (though last two probably only in the java version). Those three make it super useful for very low impact performance measurements.

Paxos in 25 Lines 9 years ago

That's pretty interesting. Is there a concrete example of a quorum definition where the probability of an outlier is improved vs majority quorum? I'm struggling to come up with one. I've always assumed majority is optimal, since you can tolerate outliers in (n-1) / 2 voters without seeing an outlier for the commit overall. Eg: for 3 node Raft - you'd need both followers to have an outlier before a client notices a slow commit.

On hotspot: There are two bits in the header of every object. This is enough for an object that's never been used as a contended lock, CAS operations on the header can be used to handle the locking and that's that. As soon as you actually block on it, a 'real' lock is created (you can't get around the need for a list of threads to wake up as the lock is released) and the header grows to accomodate it. The process is called 'monitor inflation'. At a later date this might be cleaned up by a 'monitor deflation'.

Quick question: What's the draw of using Netty vs pure java.nio? The latter (Selectors, Socket/DatagramChannels, ByteBuffers etc) seems reasonably straightforward to use, so I've never really looked at a framework - am I missing out?

The distinction arises when the full text of a clause is not possible to claim by law, but some weakened or lesser version is OK: If you missed the 'maximum extent permissible' part, your clause would be completely invalidated. Its a hedge.

My hours are pretty heavy: 55ish hours is an easy week, bad weeks can get a lot worse. It really varies team to team and I think a lot of people in my firm do 9-6 consistently, so if it's a dealbreaker then just ask about it explicitly during the interview. I'd definitely give it a shot (or a few shots, since the recuitment process is indeed a lottery)

Do you have any visibility on what it was that triggered your change? I don't mean to pry, achieving a genuine change of outlook is rare, fascinating and to be celebrated. A lot of time the internal struggle is worsened because there doesn't seem to be any way to break out of the thinking patterns.

Sure adaml_623,

0x3dcccccd in IEEE 754-2008 (binary32) corresponds to the interval (0.09999999776482582, 0.10000000521540642) - which contains 0.1.

Disclaimers: I worked this out with double precision, and if you care about if the endpoints are inclusive/exclusive, the wikipedia article will help.

Sure it does - in that any floating point scheme is a well defined partition of the real line in the range [-FLT_MAX, +FLT_MAX] into 2^n intervals (less two Infs, a load of NaNs and a spare zero), one of which absolutely contains 0.1

My point is that should there exist some higher level structure in the brain that is more amenable to simulation than the equivalent quantity of low-level synapses and neurons, then all bets are off about exactly what sort of computer is required to simulate it. The brain has to be replicable by biological processes - who knows what tricks it has to pull to achieve its function? Maybe it's possible to come up with an 'optimizing compiler' that tosses the junk.

Presumably you're referring to the neuron-level simulations that crop up in the news every time some university gets a new supercomputer? Maybe there are some shortcuts.

Just like 10 years ago the only conceivable way of rendering diffuse light was with raytracing or radiosity simulations. Now we have modern techniques like ambient occlusion that makes it reasonably cheap to do in a rasterizer in realtime.