Well, the X5670 was a high-end 2P server CPU sold for $1400 (https://ark.intel.com/products/47920/Intel-Xeon-Processor-X5...) so to fairly measure how performance has improved, you should compare it to a similarly priced product, like the AMD EPYC 7401 (https://www.amd.com/en/products/cpu/amd-epyc-7401). And, oh, look at this: the SPECint_rate "h264ref" benchmark subcomponent, which measures multithreaded video encoding performance, shows a 4.2× improvement (472 to 2000):
• X5670: https://www.spec.org/cpu2006/results/res2010q2/cpu2006-20100...
• EPYC 7401: https://www.spec.org/cpu2006/results/res2017q4/cpu2006-20171...
Edit: oops, fixed major screw up. I had linked to SPECint numbers, instead of SPECint_rate. The real improvement is 4.2× not 45×! Far from what Moore's Law predicts (2^(8/1.5)) but still a very notable improvement. I'm sure your friend would be happy to transcode 4× faster...
To compare, let's presume (this is a great exaggeration I know but it serves the purpose) each Chrome tab takes equal CPU time. Say, on the current computer the 100th tab makes it unusuably sluggish. At 2x, the previous computer could open 50, even at 4x we are looking at 25. At 100, we are looking at not being able to run Chrome.
It's also worth noting that a X5670 cost ~$1400, so you're comparing ~$2800 worth of CPU to ~$350 worth of CPU in something like an 8700k, and that doesn't cover platform cost differences. Another way to look at this is that 8 years after the release of the X5670, you can get better performance for ~10% of the price, that's not bad. If you did plop down ~$2800 today for a CPU or two, you'll have 28+ cores at your disposal.
In just over a weeks time you will be able to get a 32 core / 64 thread AMD Ryzen Threadripper 2990X [1] for around $1,500-$1,800 which is pretty amazing.
[1] https://wccftech.com/amd-ryzen-threadripper-2990x-2970x-2950...
The ryzen is only 20% better in single threaded performance. I could easily overclock my cpu to close further the gap. Just need to upgrade my gpu and I'm good for a few more years. These cpus have aged quiet well.
Double the performance isn't too bad obviously, but that's about the same timespan as between the 486 and the Pentium III.
I made my desktop in 2014 with a Haswell i5-4670K @ 3.4GHz. Overclocked it to 4.3GHz, and I still don't have a reason to upgrade. I really want a Ryzen 2700X also but staying patient. Newer and better hardware will keep coming out so I'm in no rush. (but my next CPU will definitely be AMD)
My current thing right now is compiling the Linux kernel exactly catered to my Haswell machine, and using the latest gcc with "-march=native -O2" optimizations. It might seem minor, but man if she ain't screaming right now. I should mention I have an AMD RX 480 graphics card also. So I'm up-to-date in that world and enjoying the best of team red and blue right now. New drivers, software, kernels, and optimizations keep coming out that make my current hardware faster. But then came Spectre and Meltdown lol.
One thing I will say, compiling your own has many benefits, as all the distribution kernels use Generic x86-64 and miss out on all the Intel/AMD optimizations.
For example, just by switching from "Generic-x86-64" to "Core 2 or newer" in Processor type and features -> Processor family in kernel config, adds these 5 optimizations:
CONFIG_X86_INTERNODE_CACHE_SHIFT=6
CONFIG_X86_L1_CACHE_SHIFT=6
CONFIG_X86_INTEL_USERCOPY=y
CONFIG_X86_USE_PPRO_CHECKSUM=y
CONFIG_X86_P6_NOP=y
You can say it's pulling hairs, but hey, that's what I want. Not many people have the time, know-how, run Linux, etc. to be able to make these optimizations.
My much newer one (six core 6850/950 NVME/1080ti/32gb) really isn't that much faster, GPU aside.
For example: https://www.ebay.com/itm/Intel-i7-4770-3-4GHz-Quad-Core-Syst...
https://ark.intel.com/products/80807/Intel-Core-i7-4790K-Pro...
Intel® Virtualization Technology for Directed I/O (VT-d) ‡ Yes
And that's not even covering motherboard incompatibilities with Linux (e.g. sleep/shutdown not working, WiFi/Bluetooth broken, etc.)
Have those problems been fixed definitively? Or should one stick to Intel for Linux at the moment?
Also, since I use the Arch distro, installing packages from the AUR requires compiling stuff. So far ffmpeg has been among the packages with large source code base that I compile regularly and I've never had issues. I would like to compile the kernel too, but I'm unsure as to whether the difference will be noticeable for my daily usage. On my old machine, the Zen-kernel did improve responsiveness, but on my current one, I'm sticking to the LTS kernel.
Word is that the 2nd generation of Ryzen a.k.a Raven ridge are more stable and worth it if you can afford them (watch out for motherboard compatibility though).
I for myself couldn't suffer a machine where I occasionally need to reset , destroying flow.
Most of your gripes come from running Linux on a laptop machine. If you are a person who likes to work on powerful desk workstations, Linux behaves great on those. Granted, some things, such as multifunction printers (which are mostly software-driven) don't have support. You do have to be careful when selecting hardware, unfortunately.
Yes, of course!
> What about compiling large source code bases? There were some scary bugs reported on Linux when Ryzen came out.
Are you referring to this? https://www.extremetech.com/computing/254750-amd-replaces-ry...
The later revisions of Ryzen 1000 CPUs have been fixed, you could RMA your CPU if it was affected (I did this myself, AMD's support was excellent). Ryzen 2000 CPUs aren't affected.
> Have those problems been fixed definitively? Or should one stick to Intel for Linux at the moment?
I've never heard of any motherboard incompatibilities. The WiFi chips in some of those AMD motherboards are actually from Intel btw.
I'm running an AMD Ryzen workstation with Linux for over a year now and it works perfectly.
In other words: new CPU architectures don't make old algorithms faster†. Instead, new CPU architectures enable newer, faster algorithms.
† Yes, this used to happen, in the 90s, when "new CPU" meant "appreciably higher clock speed." Nobody is making computers faster by increasing clock speeds any more, because higher clock speeds = higher power-draw and higher TDP. CPUs are now advanced by making them work smarter, not harder: accomplishing the same abstract tasks faster by providing hardware that enables newer algorithms to be used for those tasks, while using the same or less energy than the previous implementation would have used.
Since moores law is leveling off, programming skill & quality will become more important to extract more performance out of computers. I forsee less javascript and python and more golang, java & rust and other %100 statically typed languages in the future.
Like client-server vs local, progress is a cycle.
If your language is inherently heap bound and/or targets bytecode with ad-hoc JIT trickery, no amount of static typing or hard inference is going to help.
C (static typed, static dispatch, manual memory, x1) -> C++ / Objective-C (static typed, dynamic dispatch, manual / refcount memory, x2) -> Java (static typed, dynamic dispatch, GC memory, x3) -> JavaScript (dynamic type, dynamic dispatch, GC memory, x7)
Java is a actually fairly fast for a language with GC. Far faster than equivalent javascript unless you do things like asm.js, which might as well be just a binary runtime.
And it's not setting any speed records among automatic memory management languages either. Swift is well ahead in performance without breaking a sweat. Some Common Lisp implementations generate faster code than Java without any JIT overhead and a billion investment into development.
It doesn't use full automatic GC, so of course it is going to be faster than Java.
Swift also has performance gotchas, like it's strings. It's strings are very easy to use in an non-performant way because they are going for full unicode correctness, even when you don't want it.
But it's also a young language with a whole bunch of low hanging fruit in the perf realm.
My perf scale is also more orientated towards business logic / app type things. If your really thinking about your perf and doing a rewrite in fully static C/C++, then I have no idea how much better you can get :)
Is common lisp fully GC?
And yes, CL is fully GC. But my point is that's not the culprit. If your problem calls for allocation and management of heap memory, it has to be done one way or another, manually or via GC. GC overhead in that light can really be negligible, and it's other concerns (like scheduling and real time constraints) that typically make its use problematic.
Does not explode, just burns
The only annoying issue is having to use a piggyback PSU for my graphics card, an RX480. Dell just had to use a proprietary ATX-style connector or else I would have just replaced the stock PSU all together.
Wait, what? 50% faster? Is that all? I mean, many tasks are still single threaded and from 2010 to 2018 we have grown 50% in single thread and 100% in multithread? If things were going the "old way" then in 8 years would've seen a 2^(8/1.5) -- well over thirty times speedup (Moore's law as stated by David House who predicted that chip performance would double every 18 months). You can see some of that http://3dfmaps.com/CPU/cpu.htm here.
No wonder there's no point focusing on old CPUs any more.