• akash_rawal@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    edit-2
    1 year ago

    Everything seems to be way faster on Linux than on windows for some reason.

    On one occasion I tested a build that took ~10 min on windows, in a Linux VM installed on the same machine, it finished in ~1min.

    I have searched around for an answer for quite some time now, I could not find any definitive reason. Some say that process creation is slower on windows, some say IO is inefficient. Still struggling to explain 10x increase in throughput.

    Here is a funny instance: https://emacs.stackexchange.com/questions/17783/why-does-emacs-take-longer-to-start-on-windows-than-on-linux

    • gosling@lemmy.world
      link
      fedilink
      English
      arrow-up
      12
      ·
      1 year ago

      IMO it’s because Windows is targeted for general use so they don’t bother optimizing anything. They’ll just convince people that thei have aging hardware when things become slow and say stuffs like “unused RAM is wasted RAM” to justify taking up half of my memory on idle.

      Even running Linux from a USB is still a way smoother experience than running Windows for me.

    • redcalcium@lemmy.institute
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      1 year ago

      I thinks it caused by two reasons:

      • process creation has much higher overhead on windows. On top of that, the antivirus system adds additional overhead not present in Linux because it scan every process on launch and monitor its behavior until the process finished. This result in any workflow that relies on launching a bunch of processes (e.g. make-style compilation which launch the compiler process recursively) to be very slow on Windows.
      • file access on windows is also significantly slower on windows due to its filesystem filter. Also, antivirus typically hook into this filter and inspect every opened files. You can imagine this would result in significant slowdown for any workflow that relies on opening a lot of small files (e.g. compilation)

      If you disable the antivirus (including windows defender) performance would definitely improve, but it’ll still slower than on Linux.

      In order to gain sufficient performance in windows, you’ll have to use threads instead of processes (basically a single program doing everything instead of chaining multiple program Unix-style) and put your data in a single file so it can load all at once instead of in a bunch of small files loaded recursively. Basically a complete opposite of what people do on Linux.