Hacker News new | past | comments | ask | show | jobs | submit login

VMWare is a must for Windows. Code compiles 10x faster in a virtual machine on Windows than it does if you compile on Windows natively. Or 100x faster if you forgot to disable Windows Defender. I've always found that amusing.



Full transparency, I work at Microsoft on the hypervisor.

What do you find that VirtualBox does better than Hyper-V?


I use VMWare Workstation Player to run a bunch of different operating systems on Windows, e.g. FreeBSD, OpenBSD, Windows 7, etc. It's served my needs pretty well for some time. Hyper-V as I understand it is pretty new. I think I'm using it to run WSL2 and I'm pretty happy with its performance. However I don't know how to use Hyper-V as a VMWare replacement. I'd imagine if it's able to do that, the learning curve would be a bit higher due to the CLI.


That's not my experience with C++.


Any idea of why this is?


Most compilation processes create a lot of very small files. Or a metric ton of them if you're unlucky enough to do js.

NTFS is awful at doing lots of small accesses on very small files, at least compared to Ext4. Add to that the fact that if you're on WSL, it needs to write POSIX attributes (which NTFS has no support for and therefore WSL must emulate), and that's a recipe for builds being slowed massively by IO.

As for Defender, well, Defender sees new files and halts everything while it scans them. You can see how that can be a problem for a process that pops out tens of thousands of temporary files, which it will all go and scan, locking them while it does so.


Another thing that makes Windows builds go slow is the lack of vfork(). On Linux, vfork() lets you create and teardown a new process in ~30 microseconds. On Windows it takes about 6000 microseconds to do the same thing, which is in large part due to the lack of copy-on-write memory (which Windows won't support, due to Microsoft corporate culture being heavily biased against overcommit models).


> which NTFS has no support for and therefore WSL must emulate

With ntfs3 (kernel 6) this is no longer true, as can be seen for example in Arch install living next to windows on C:\ https://gist.github.com/motorailgun/cc2c573f253d0893f429a165...

Also NTFS has had POSIX attributes support - they just weren't used before.


Note that I said WSL, not WSL2.


And I insist: NTFS has support for POSIX attributes. NTFS3 proves that: you can install arch on C:\, and use it normally.

WSL1 doesn't support POSIX attributes, just like ntfs-3g didn't support them, but it's not a limitation of NTFS.




Consider applying for YC's Summer 2025 batch! Applications are open till May 13

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: