The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(Score: 0) by Anonymous Coward on Thursday April 24, @08:16AM
(2 children)
by Anonymous Coward
on Thursday April 24, @08:16AM (#1401358)
Gentoo or die
In some ways it's unfortunate that Gentoo originally pitched their niche as performance, because really the extra 0.5% you get from fiddling with compile options basically doesn't matter at all. What Gentoo gives you is flexibility. You can use systemd or not, pulseaudio or not, glibc or musl, gcc or clang (of course some programs actually need one or the other), X or Wayland, whatever. When the systemd wars happened I barely even noticed. I distribute RPi-based embedded systems, and they run Gentoo. This gives me free GPL compliance, even GPL3, because everything required to comply with GPL is right there. In theory, the end-user could log in, type emerge -e world and rebuild every GPL program from source. (The real-world performance of this is another matter, it would take a week). I build the system on an ARM-based AWS host, so I don't even need to cross-compile. Which is good, because a lot of stuff is in Rust now and you can't really cross-compile Rust. It's also possible to do this in QEMU, it's pretty slow, but it does work. Last time I tried this it took a week to build Chromium, but my CPU is slow.
Although the time required for compiling is mildly annoying, because it's rolling release this matters a lot less. You upgrade when you want to, and while not every update is painless, generally I just run the update overnight and when I wake up it's done. The package manager is intelligent enough that even when some update, it never (well, almost never) leaves the system in a broken/inconsistent state. I have had more RedHat-based systems break on upgrade than Gentoo.
The only programs that I find slow enough to compile to be a pain are GCC, LLVM/Clang, Rust, Chromium, Webkit and LibreOffice. GCC wouldn't be so bad if it didn't insist on recompiling itself three times. Firefox is a relatively light compile, it takes less than an hour, and I only have a six-core CPU. But there's a binary version if you want.
I only use binary packages for bootstrapping runtime environments like Java and Rust where you can't really build them from scratch without a version already installed. It's not really different from starting with a binary C compiler. But there are binary packages for all the big, inconvenient packages.
(Score: 0) by Anonymous Coward on Friday April 25, @12:12AM
(1 child)
by Anonymous Coward
on Friday April 25, @12:12AM (#1401428)
0.5% improvement? We get more than that just by changing the instruction set flags to a more accurate values. All forms of optimization and tuning combined has resulted in speedups of almost 50% in some cases.
(Score: 0) by Anonymous Coward on Friday April 25, @05:13AM
by Anonymous Coward
on Friday April 25, @05:13AM (#1401447)
Certainly you can get a big improvement by, say, having AVX enabled vs. having it disabled. But what happens in the real world is binary distros enable everything, and then the code determines at runtime what is available, and chooses the appropriate code path. So really what you are getting in most cases is just a size optimization, not a performance optimization. Maybe you can get more speedup in specific programs with -O3 or higher, which isn't safe to use system-wide.
Gentoo doesn't even allow you to compile glibc any more without all the compatibility cruft. If you build glibc today, it will have compatibility code for kernels going all the way back to 2.6. Ironically, binary distros are now better at this than Gentoo.
(Score: 0) by Anonymous Coward on Thursday April 24, @08:16AM (2 children)
Gentoo or die
In some ways it's unfortunate that Gentoo originally pitched their niche as performance, because really the extra 0.5% you get from fiddling with compile options basically doesn't matter at all. What Gentoo gives you is flexibility. You can use systemd or not, pulseaudio or not, glibc or musl, gcc or clang (of course some programs actually need one or the other), X or Wayland, whatever. When the systemd wars happened I barely even noticed. I distribute RPi-based embedded systems, and they run Gentoo. This gives me free GPL compliance, even GPL3, because everything required to comply with GPL is right there. In theory, the end-user could log in, type emerge -e world and rebuild every GPL program from source. (The real-world performance of this is another matter, it would take a week). I build the system on an ARM-based AWS host, so I don't even need to cross-compile. Which is good, because a lot of stuff is in Rust now and you can't really cross-compile Rust. It's also possible to do this in QEMU, it's pretty slow, but it does work. Last time I tried this it took a week to build Chromium, but my CPU is slow.
Although the time required for compiling is mildly annoying, because it's rolling release this matters a lot less. You upgrade when you want to, and while not every update is painless, generally I just run the update overnight and when I wake up it's done. The package manager is intelligent enough that even when some update, it never (well, almost never) leaves the system in a broken/inconsistent state. I have had more RedHat-based systems break on upgrade than Gentoo.
The only programs that I find slow enough to compile to be a pain are GCC, LLVM/Clang, Rust, Chromium, Webkit and LibreOffice. GCC wouldn't be so bad if it didn't insist on recompiling itself three times. Firefox is a relatively light compile, it takes less than an hour, and I only have a six-core CPU. But there's a binary version if you want.
I only use binary packages for bootstrapping runtime environments like Java and Rust where you can't really build them from scratch without a version already installed. It's not really different from starting with a binary C compiler. But there are binary packages for all the big, inconvenient packages.
(Score: 0) by Anonymous Coward on Friday April 25, @12:12AM (1 child)
0.5% improvement? We get more than that just by changing the instruction set flags to a more accurate values. All forms of optimization and tuning combined has resulted in speedups of almost 50% in some cases.
(Score: 0) by Anonymous Coward on Friday April 25, @05:13AM
Certainly you can get a big improvement by, say, having AVX enabled vs. having it disabled. But what happens in the real world is binary distros enable everything, and then the code determines at runtime what is available, and chooses the appropriate code path. So really what you are getting in most cases is just a size optimization, not a performance optimization. Maybe you can get more speedup in specific programs with -O3 or higher, which isn't safe to use system-wide.
Gentoo doesn't even allow you to compile glibc any more without all the compatibility cruft. If you build glibc today, it will have compatibility code for kernels going all the way back to 2.6. Ironically, binary distros are now better at this than Gentoo.