Skip to content

MSYS/Cygwin performance is extremely low #15

Open

Description

Environment

Item Value
OS, Version / Build Win32NT 10.0.18363.0 Microsoft Windows NT 10.0.0.18363.0
Processor Architecture ___ (no output? but it's x64)
Processor Type & Model Intel Broadwell
Memory 16GB
Storage Type, free / capacity (e.g. C: SSD 128GB / 512GB) SSD 14.5 GB / 81.6 GB
Relevant apps installed mingw-w64/msys2

Description

Lots of software uses GNU autoconf or build systems written in POSIX shell. Typically, these use msys/cygwin to run on Windows at all (otherwise they couldn't support Windows). However, performance is extremely low. Essentially, Windows is missing a well-integrated POSIX environment, and the emulation done by Cygwin is, in many situations, extremely slow.

Please note that WSL does not solve the problem in general. It's not well-integrated, but it's more like a VM (WSL2 is literally a VM). A solution that is well-integrated is required. POSIX shell execution is actually only an example. Any project that makes use of POSIX, a standard for portable OS access, suffers from win32's non-orthogonal mess, that makes porting to Windows a nightmare. Even projects supported by Microsoft suffer from this problem. For example, consider: https://github.com/PowerShell/openssh-portable/blob/latestw_all/contrib/win32/win32compat/fileio.c https://github.com/PowerShell/openssh-portable/blob/latestw_all/contrib/win32/win32compat/w32fd.c.

It should not be necessary for every program to invent a POSIX compat. layer for Windows, which will be slow (as win32 does not provide the required capabilities). This will generally reduce the Windows experience, and it's Microsoft's responsibility to offer a better solution.

Steps to reproduce

A good test is running ffmpeg's configure program. FFmpeg is well-known enough, so no further description is necessary. However, it affects a lot of other projects.

Expected behavior

POSIX shell execution is as fast as on Linux.

Actual behavior

POSIX shell execution is several magnitudes slower than native or even virtualized Linux.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    Area-File-IOIssue in the IO layers above filesystem (e.g. filter drivers)Area-FilesystemIssue in the NTFS/*FAT filesystem

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions