Cache or cores? Biscuit or cake?
It's about three years since I built my Ryzen system. It's a Ryzen 5 3600 (Zen 2, Socket AM4) with 32GB RAM.
Since dual core became a thing I have been meaning to take over the world with cunning multi-threaded code but about as far as I've got is some shell scripts that do things in parallel.
I figured I should upgrade the machine while AM4 CPUs are still available. I noted that AMD had some CPUs out with this newfangled 3D cache, and that they were pretty fast on certain workloads.
So my decision was biscuit or cake? Cache or cores?
It's taken me a few weeks, and much deliberation but today I decided to go for the cake. I think it will be more fun to have more cores to play with. I have ordered a Ryzen 9 5900X (12 core/24 thread Zen 3) and a cooler with two great big fans and fancy quiet bearings to go with it.
I'll need to revisit my old tests from three years ago and see what sort of a difference all those extra cores make. Obviously, there will be more contention for memory bandwidth. If I get around to it, I might post the results together with the results for the old CPU.
Meantime, I have been writing a little bit of C, finally getting around to something I've been meaning to do for 15 years. One day I'll write something about procrastination. I have an anecdote.
(Score: 2) by turgid on Thursday May 25, @07:32PM
Some years ago I played with gcj, the GNU Java compiler (then part of gcc). It could compile Java source down to native machine code and it could also compile Java bytecode down to native machine code, so you could take pre-compiled Java class files and convert them to ELF binaries. It was a fun toy. Unfortunately at the time I didn't know enough Java to really try it out.
The project died quite some years ago. I seem to remember the Java class format changed to add inner classes or something, and gcj was not updated.
I believe one of the advantages of a JIT is that it is able to do very specialised optimisations dynamically depending on the CPU state at a given time. Obviously, an ahead-of-time compiler can't have that information. CPUs try to do some of that in hardware, but there are limits of course.