Slashdot Mirror


Firefox Faster In Wine Than Native

An anonymous reader writes "Tuxradar did some benchmarks comparing Firefox's Windows and Linux JavaScript performance. 'We did some simple JavaScript benchmarks of Firefox 3.0 using Windows and Linux to see how it performed across the platforms — and the results are pretty bleak for Linux.' Later on, they tried Wine. 'The end result: Firefox from Mozilla or from Fedora has almost nil speed difference, and Firefox running on Wine is faster than native Firefox.'"

40 of 493 comments (clear)

  1. Dear losers by tqft · · Score: 5, Informative

    Check the doco

    Firefox 3.0 built for Windows was PGOed (Profile Guided Optimisation)

    PGO was not yet enabled for linux builds

    Try a newer build.

    FAIL

    --
    The Singularity is closer than you think
    Quant
    1. Re:Dear losers by Anonymous Coward · · Score: 5, Funny

      You should test it for yourself - benchmark which setup loads the fucking article fastest and let us know how that turns out.

  2. First post... by Anonymous Coward · · Score: 5, Funny

    except I'm using Linux

  3. However... by zoward · · Score: 4, Informative

    On the flip side, the pop-unders I get from my local newspaper's site under Firefox don't happen under Linux, only Windows.

    --
    "Can't you see that everyone is buying station wagons?"
  4. Not suprised by iYk6 · · Score: 4, Insightful

    Mozilla created Firefox for Windows, and then they made a half-assed version for Linux. I'm not really surprised that the Windows version runs faster. Wine usually runs programs at about the same speed as the Windows version. Sometimes a little more, sometimes a little less.

    I don't see how this "looks bleak for Linux." Damn trolls.

  5. Why not? by brunes69 · · Score: 4, Interesting

    For everyone else in the world who does not know what PGO is maybe some details on why it is not enabled would be helpful.

    1. Re:Why not? by plover · · Score: 5, Informative

      Profile Guided Optimization (PGO) is where you compile a special "recording" build of a program, then run it just using your core feature set and "ordinary" tasks. You don't perform a full test, or click on all the options or settings, you just go through normal end-user use cases. The special build then records a "profile" of your typical usage. You then feed the source code plus the profile back into the build process to build your production code.

      The idea is for the linker to identify the hot spots in memory, and group as many of them together as possible so they live on common pages. This helps keep those pages from being swapped out of memory to disk due to disuse, which greatly reduces the amount of thrashing your end users will see during normal use. Less thrashing == improved performance.

      --
      John
    2. Re:Why not? by plover · · Score: 5, Informative

      Oops, sorry, I didn't answer your "why not?" question directly. My guess is that because it takes a fair amount of additional work to create the profile after each build, the step may have been skipped by the Linux build team. As far as I know, profiles are unique to each build: you can't create a profile under the Windows image and reuse it on the Mac or Linux builds.

      That's just a guess, though, I could certainly be wrong about that. I'm sure a PGO expert or perhaps a member of the Firefox build team will chime in here soon to correct me if I am.

      --
      John
    3. Re:Why not? by gzipped_tar · · Score: 5, Informative
      --
      Colorless green Cthulhu waits dreaming furiously.
    4. Re:Why not? by somenickname · · Score: 5, Interesting

      The idea is for the linker to identify the hot spots in memory, and group as many of them together as possible so they live on common pages. This helps keep those pages from being swapped out of memory to disk due to disuse, which greatly reduces the amount of thrashing your end users will see during normal use. Less thrashing == improved performance.

      You were correct until here. This isn't PGO's primary purpose. It may do this to prevent TLB misses but, certainly not to lessen the impact of swapping (which for an average desktop linux user is almost non-existent). Optimization is about making decisions about what is likely to produce the fastest code. If the compiler knows how the code is going to be used, it can make better decisions.

    5. Re:Why not? by AmaDaden · · Score: 4, Informative

      The profile in question here is a profile of what variables and chunks of code the program (in this case FireFox) uses the most, not your FireFox user profile. By knowing this it knows stuff like what variables are read and or written the most and the least and it knows what functions should be next to other functions used at the same time. This gives it a good idea of where to store things when it compiles the source. For example the variable containing the users bookmarks will not get accessed as frequently as variable containing the current tabs. While this profile could be effected by how the user uses FireFox it is very unlikely to be a significant difference.

    6. Re:Why not? by aonaran · · Score: 4, Informative

      I think that is why GP said the impact of swapping "for an average desktop linux user is almost non-existent" ...because for an average desktop linux user swapping is almost non-existent.

      I've run Linux machines (for short periods of time, with no more than normal desktop use loads) without any swap, and they work fine... but when you hit that wall of running out of physical RAM you'll feel it a lot more without swap than you would with a swap file/partition.

      Windows on the other hand seems to want to use several hundred megs of swap whether it needs it or not.

    7. Re:Why not? by patniemeyer · · Score: 4, Insightful

      Just wanted to point out that this is the advantage that Java and other runtime profiling languages have over purely statically compiled code. The more information you have the more you can do.

  6. How fast do we need? by vorpal22 · · Score: 4, Informative

    Seriously, how fast does a web browser *need* to be? I've never been using Firefox on Linux and thought to myself that it was prohibitively or even annoyingly slow.

    Reading TFA, in most cases, the differences in times don't seem dramatic, either, so who really cares?

    1. Re:How fast do we need? by RiotingPacifist · · Score: 5, Funny

      hey i want the page render before i even click the link (possibly using thiotimoline, but i don't care about specifics), until the browser does that i will never be happy!

      --
      IranAir Flight 655 never forget!
    2. Re:How fast do we need? by Hatta · · Score: 5, Insightful

      Have you visited Slashdot.org with javascript on in Firefox recently? It stalls for a couple seconds while formatting those god awful tags.

      I guess it's easier for Taco to wait for Firefox to get faster, instead of writing decent code to begin with.

      --
      Give me Classic Slashdot or give me death!
  7. Re:Really a surprise? by Bizzeh · · Score: 4, Insightful

    if you want to talk about monolithic, do-it-all library architecture... lets talk about glibc. does far far far more than any libc is needed to do.

  8. Not just Wine by Kz · · Score: 4, Insightful

    i usually develop on Linux, and test against Konqueror and Firefox 3, and periodically fireup a KVM virtual machine running winXP for testing against IE, Chrome, and Firefox (again).

    when doing heavy JS animations, and even more when using Canvas, it's pretty obvious that FF on windows is far smoother than on Linux, even with the VM overhead.

    I'd say that there are lots of optimizations that the FF/Linux dev team left out.

    --
    -Kz-
  9. Firefox Faster In Wine by AlterRNow · · Score: 4, Funny

    Firefox Faster In Wine

    And here I was thinking inebriation led to slower brain functions!

    --
    The disappearing pencil trick. Let me show you it.
  10. about:buildconfig by DrXym · · Score: 5, Informative

    By default Firefox for Linux uses shared system libraries rather than statically linking them altogether as the Windows version does. That's bound to have an impact on performance because code and data pages will be all over the place. Type "about:buildconfig" into the browser and it will tell you its build settings.

  11. Re:Really a surprise? by Elrond,+Duke+of+URL · · Score: 4, Insightful

    Serious question: What is glibc doing that you don't think it should be doing?

    --
    Elrond, Duke of URL
    "This is the most fun I've had without being drenched in the blood of my enemies!"-Sam&Max
  12. Firefox is slow on Linux in general by Teckla · · Score: 5, Interesting

    I dual boot between Windows XP and Ubuntu GNU/Linux (of the Intrepid Ibex flavor).

    Firefox is slow on Linux in general. Page Up, Page Down, Arrow Up, Arrow Down, Ctrl+Plus and Ctrl+Minus (to increase and decrease the font size)...all of these things are instantaneous on Windows XP, but there's a noticeable lag on Linux.

    I'm not sure what the problem is. I'm using the proprietary ATI drivers on Linux, which should be pretty fast. And my machine is old enough that all the kinks should have been worked out of the Linux drivers for my hardware.

    1. Re:Firefox is slow on Linux in general by QCompson · · Score: 4, Interesting

      Yep, I have the same experience. Firefox operations are much, much slower in linux than in windows. Another example is tab switching. In XP/Vista it is instantaneous, but in linux there is a slight delay. Things like this make the GUI feel very sluggish (I'm using the nvidia driver btw).

    2. Re:Firefox is slow on Linux in general by Anonymous Coward · · Score: 5, Informative

      It doesn't really have to do with X or Firefox so much as the interaction between X and Firefox. Composition effects and pixmap caching at the two prime issues.

      Composition is when you draw an image that blends with what is already on the screen. Right now, a lot of the Xorg code that accelerates composited effects is unfinished. In particular, rendering composited text is painful. The brute force solution of blending with what is on-screen is awful, because reading from video ram is very, very expensive. So optimizing this is pretty non-trivial since the optimization must be that you don't look at what you need to blend with! Progress is happening though.

      Pixmaps are used to store images in the X server. Firefox, to get the rendering effects it wants, often uses large pixmaps for application elements. Large pixmaps can cause memory fragmentation issues, making later allocations harder, causing performance to slowly decline over time. Again, this is something being worked on, but in this case, the client is really not behaving very nicely.

      Like I said, progress is being made on these fronts - Xorg's xserver 1.5 and 1.6 are supposed to have some good acceleration improvements. There's been work on a much improved glyph cache for EXA accelerated fonts. I haven't run any of these, since my distro currently ships 1.4, and I don't really plan on upgrading until Debian does. But since it's a pain point for me, and I read the development mailing list, I thought I'd share.

  13. Re:Really a surprise? by clickclickdrone · · Score: 5, Insightful

    >But are we really going to try to maximize speed over durability?
    I was taught very early in my IT career that there are 3 considerations on any project.
    1. It can be cheap
    2. It can be fast
    3. It can be reliable.
    Now go and pick 2 out of 3.

    --
    I want a list of atrocities done in your name - Recoil
  14. Re:Really a surprise? by Jimithing+DMB · · Score: 5, Informative

    That's way off base. There are no context switches when making a library call. Context switches occur when you ask the kernel to do something by making a syscall. So memcpy or memcmp don't incur a context switch. Nor do fopen or fread in and of themselves cause context switches. But one will occur when the underlying open and read calls are made.

    What's really needed here is a profiler to find where the code is spending the bulk of its time. My guess is that it's a compiler issue. And other comments about the windows build using profile guided optimization tell me my guess is probably right.

  15. Re:Rats! by mcvos · · Score: 4, Insightful

    If Firefox ran faster in Wine than in native Windows, that would be great news. As it is, it's undoubtedly because Firefox's code is optimized for Windows, rather than Linux.

    If it runs faster in Wine than either native on Windows or native on Linux, that'd be really cool. Or funny. Or sad. I'm not yet sure which.

  16. Re:Really a surprise? by SCHecklerX · · Score: 5, Funny

    Actually, I think it's "Good, Fast, Cheap. Pick 2". And for online dating, it seems to be "Attractive, Intelligent, Sane. Pick 2".

  17. I know that Swiftfox has not been making people by aussersterne · · Score: 5, Insightful

    happy for non-technical reasons, but I continue to use Swiftfox on Linux because it is so damned much faster than Fedora's Firefox build.

    I know that there is a CPU optimization difference, but I haven't looked into other differences. Someone who has looked at the buildconfig for both and/or who knows about the build processes and configurations of both: is the reason for the slowness in the comparison referenced in this post related at all to something that Swiftfox is fixing?

    --
    STOP . AMERICA . NOW
  18. Though Not Dramatic, Interesting Nonetheless by filesiteguy · · Score: 4, Interesting

    I think it stands as a testamant to the WINE folks. I know Linux distros and the various Window Managers - KDE/Xfce/IceWM/Gnome - have to handle things that Wintendo doesn't, as it is integrated into the OS from the get-go.

    However, the results are not that dramatic. I'd be curious to see a few things, including how Native FF runs in KDE with the Gnome libraries loading up. (I run KDE.)

    Also of note - I've posted before on lists that "starting" Word 2003 takes about half the time as it does to "start" OpenOffice 2.x on my distribution. I run CrossoverOffice and have Office 2003 loaded. My guess is that there may be something in Wine that optimizes these processes.

  19. Re:Really a surprise? by rkit · · Score: 5, Informative

    You obviously have no idea what a context switch is.
    A context switch happens when the scheduler stops one process/thread and gives the CPU to a different one. This has nothing to do with cross-library calls.

    --
    sig intentionally left blank
  20. Misguided effort by Wolfier · · Score: 4, Informative

    Browser response, not speed, is what annoys most people on Firefox, since version 1.

    Instead, it's the lack of threading - that the notion "UI, the rending engine, and plugins should run in separate threads, with the UI thread having the highest priority".

    Konqueror runs Flash player in its own process "nspluginviewer", which I can renice to 19 - just like how IE runs Flash in the lowest priority by default. Still, on Firefox 3, a few tabs running CPU-intensive Flash can still effectively freeze the browser UI.

  21. Re:Really a surprise? by locnar42 · · Score: 4, Insightful

    And for your career 1) Like what you do 2) Make lots of money 3) Operate within the law
    Pick any two

  22. Re:You not thinking Milti-Core. by akadruid · · Score: 4, Interesting

    Laptops in particular often have slow hard drives. Antivirus slows them further. You're probably waiting for the disk all the time.

    It's often compounded in a business environment by other disk access apps (auditing etc).

    I know on my laptop, lauching firefox involves McAfee scanning Firefox, then Centennial scanning Firefox, then McAfee scanning Centennial, then McAfee scanning Firefox again.

    --
    "Those who cast the votes decide nothing; those who count the votes decide everything." (attrib. Joseph Stalin)
  23. Re:Really a surprise? by DarthVain · · Score: 5, Funny

    Attractive and Intelligent works for me! Just don't sleep with her, and by sleep I mean fall asleep. Also hide all knives and scissors.

  24. Re:Really a surprise? by gentlemen_loser · · Score: 4, Informative

    I am not sure how you got modded insightful. Linux, in terms of the kernel, is in fact a monolithic structure but has nothing to do with the API/lib/small packages that can be chained together that the OP was talking about. Linux in the GNU/Linux sense (a distribution), is in fact composed from many small libraries that each perform a specific function well.

    Regarding your point about how the app was built: How do you draw a distinction between the Windows, Linux, and UNIX builds of Firefox? I'll help you - each version is a port using libraries on the system that it is ported to. Those dependencies do in fact have an impact on compilation, how the memory map is built, and how well the application performs.

    Also - the optimization process differences are significantly more complicated than you implied. I strongly suspect, although am not positive because I have never built it from source or examined how an RPM was built, that the Linux Firefox build was done with at least -O2 or -O3 flags. The difference that FP was talking about was PGO (Profile Guided Optimization), which is more involved (and thus better performance gains) than just turning on the default compiler optimizations.

  25. Re:Really a surprise? by IamTheRealMike · · Score: 4, Informative

    Actually he's right but in the wrong direction. On Wine many things that would be pure syscalls on Windows do force a context switch into the wineserver, because the emulated "kernel" is actuall a separate process. For instance opening a file involves an RPC to the wineserver on Wine, whereas it simply switches into kernel mode on Windows and there's no TLB flush overhead. The fact that Firefox is still faster under Wine than native suggests a serious bottleneck somewhere rather than a general problem - if I had to choose, I'd pick text rendering as my first guess.

  26. Re:Really a surprise? by kwabbles · · Score: 4, Funny

    I guess it's all a matter of preference. Right now my glibc is washing the dishes, which is great since my wife won't. However, in some other house they might want glibc to stay the hell out of the kitchen.

    --
    Just disrupt the deflector shield with a tachyon burst.
  27. Window Contents by domatic · · Score: 4, Informative

    Firefox appears to be using an inefficient method to render the content to the screen. If a load up a page in Firefox and drag the window around fast, the content inside the window tears and blurs and stays that way for a second after I stop whipping the window around. Konqueror and Opera don't do this.

  28. Well, the chart's wrong. by tjstork · · Score: 4, Insightful

    GCC does everything MSVC does, and more

    This is simply not true. From the chart, Microsoft has Fastcall, disabling exception handling, simple member functions, and GCC does not. Additionally, the chart also incorrectly states that Microsoft does not have an option for fast but imprecise floating point. It does.

    On the flipside, MSVC++ has whole program optimization, which GNU calls LTO. LTO doesn't exist for GNU yet. See here:

    http://gcc.gnu.org/wiki/LinkTimeOptimization

    Scroll down and read. Pretty much, LTO looks to require a new C/C++ parser. That's not going to happen overnight.

    --
    This is my sig.