(For some reason, when building projects like LLVM with -j 16, 32 GB w/o swap may be not enough. With -j 2, it is enough, but takes an eternity).
Things speed up rather linearly up to -j28, but once I get past -j28 (say -j32) it levels off, and -j56 starts being counterproductive.
Same thing with the 160 thread POWER8 machine I have access to. That one runs 8 threads per core, and CPU-limited -jN tops out at around -j20.
All of this is very worflow and CPU specific, but generally speaking don't blindly trust what things like "htop" show you as the number of available CPUs, under the hood many of them aren't "real".
When you start two unrelated processes one after the other (such as multiple compile steps) that operate on some of the same in-memory assets (files, things being sent over a pipe etc.) they're not just going to be in the main RAM, but also L1-3 cache, and the RAM itself may be segmented under the hood (even if it's presented to you as one logical address space).
Thus you can benefit from pinning certain groups of tasks to a given CPU/memory space if you know the caches can be re-used without the OS having to transfer the memory to another CPU's purview, or re-populate the relevant caches from RAM.
Electron apps do manage to make a mockery of my PC's specs though.
1. playing some background music 2. running a local database 3. running a local webserver 4. running a browser 5. running an ide 6. running all of that stuff concurrently while testing the backend code 7. doing builds which are multi threaded in near linear speedup fashion in many languages/environments.
I don't know if 12 cores 24 logical is going to make that scenario feel overall better than 4 cores 8 logical, but I do know that 4x8 feels much much better than 2x4 in my own use cases.
#7 alone can be a really, really big win for long compiling projects.
Examples: multiple VMs, big editors/IDEs, local databases, local k8s clusters, local network simulators, and dont even start with AI or big analytics stuff.
Will also be getting a Ryzen if the singlecore benchmarks show it's reasonable. Bunch of games I play at home tend to absolutely trash single core perf.
And then there is the hassle of setting it up for all the possible projects one might work on.
EDIT:
Just some examples. Instead of developing electron application think of making changes to chromium. Instead of depeloping Qt application think of developing Qt itself. Etc etc.
Most of the time buildsystems work. Including one in Visual Studio. But I have never encountered a system that would always work flawlessly. From time to time one gets things like changes not detected or something else going haywire and one has to do make clean and just redo the whole thing.
Another thing is when your'e doing profile guided builds then one has to do a full rebuild after each profiling run.
I get the advantage of having nice large monitors, proper clicky keyboards and mice, and the ability to charge/power the laptop - all over one cable. When I want to move away from the desk - unjack and keep going.
Also I always connect it to a large monitor + mechanical keyboard both at work and at home for any serious work... so not sure why you mentioned the neck/hand position.