Thursday, January 26, 2017

Steps Mozilla must take to turbocharge Firefox's performance and take back share from Chrome [COMPACTIDEA]

  • Use the best available compiler, and compile using optimum settings so as to produce an optimized build.
  • Program and compile Firefox in a way that it starts fully utilizing all those dual and quad cores that are commonplace in desktop CPUs from Intel and AMD.
  • Optimize the number of processes Firefox uses [Chrome goes to the extreme with separate process for each tab].
  • Programming code overhaul is needed in the Firefox/Gecko code to improve rendering speed, reduce latency, consume less memory, scroll more smoothly, and so on.
    • Ditch XUL and switch to pure native code.
  • Utilize all those fancy instructions that AMD/Intel are rolling out in the newest processors. Why artificially handicap Firefox by not using all that's available in modern processors and operating systems?
  • Utilize the GPU efficiently and fully [GPGPU]. This will provide the horsepower that will make Firefox fly.
  • Defragment Firefox installation folder post install so that its launch isn't artificially slowed down.
  • Of course, all of these optimized binaries need supporting software and hardware to run on. So there has to be a stub installer, which assesses the available hardware and software environment upon being launched [including 32-bit versus 64-bit], and pulls down those binaries from Mozilla's servers that are best-suited for each system. This of course means that Mozilla will now have to maintain multiple binaries. It'll be worth it though.
    • Where Internet connections are fast, the binaries served should be optimized for performance, and not for size.
Update [2-Feb-17]: It seems it's possible to collapse/group the above points based on common themes. For example, one theme could be called Utilize All of the Available System Hardware and Software Resources Fully and Efficiently. This would include things like multi-core CPUs, utilizing special instructions in microprocessors, GPGPU, etc.