I imagine a lot of the skepticism of Windows' x86-64 emulation is a result of the slow processors that came on the first Windows-on-Arm laptops, which would make a task running twice as slow feel MUCH slower.
I’m almost an only Mac User since 1989 and I’m very grateful for this impartial review. Videos like this are the only way we have to assure that Apple keeps on improving their hardware. The more companies compete, the better products we’ll all have. It’s a win-win for Windows, Apple, Linux and other systems users. I’ve been following you for years and will remain doing so.
As I remember, Rosetta 2 does some type of translation on the first run of an application. This takes a certain amount of time but is cached so the second run of any application will be faster than the first. This would be worth testing to see if affects your findings.
I can't wait for ARM to take off on Windows. I'll definitely get an ARM Laptop, great battery life and decent performance is all I've always wanted on Windows. I hope Microsoft encourages enough developers to port their apps over soon 😁😄
You have hit the nail on the head. Apple didn't give developers a choice, it was "Go ARM, or go home." All new hardware is Apple Silicon, and Apple was pushing developers towards compatibility (and immediate cross-compilation) via deprecations of various things (64-bit only, no 64-bit Carbon, etc.) for years _before_ Apple Silicon was even announced. For Windows, the vast majority of devices being shipped today - like, 95+% - is still x86-based. Where's the incentive to developers to make ARM-based versions of their apps available? It doesn't exist. If the process is not "check a box, compile, ship" easy, they're not going to do it. Not for years.
@@MichaelAlderete I don't find the x86 instruction set useless. I don't mind owning an x86 desktop as long as I'm getting that top notch performance. I just need that efficiency of ARM for laptops and small form factor PCs. There has to be a way for Windows to convince developers to port over without trying to get rid of x86. I think both of them can coexist side-by-side.
I would like to see the Linux version of this video. Linux on ARM has also risen over the last few years and emulation of X86 has been a part of that too. I wonder how well that works.
@@arthurpizzaI noticed 2 years ago on Docker Hub that there was only 1 image I wanted to run that didn't have an Arm version. Last time I checked a few months ago, that one had an Arm version too.
I think the real advantage, that was confused as "better emulation", is just that Apple CPUs have been so much faster than the ARM CPUs Qualcomm has been using on their SoCs. It doesn't matter if your emulation layer is just as fast if your CPU is half as fast. I hope Oryon competes 1:1 against Apple and makes Windows on ARM a solid product.
Totally this! People who were claiming bad emulation performance under Windows did wrongly compare running the same code under emulation vs. much faster Intel CPU.
when first surface pro x was on the shelf, many applications cannot even use graphic unit of the qualcomm chip. and not to mention 64bit support came two years later? i don't know current situation, as there is almost no content about it, but microsoft made a terrible start on emulation front.
Apple CPUs implement Total Store Ordering, which is a feature of x64 and is about correctly handling memory accesses in multithreaded code. Without it, you need to generate slower ARM code that does store ordering manually. Also, Apple CPUs have a setting that changes how some status flags work , so that they work more like x64 flags, and adds some flag-related instructions. This makes the code easier to convert and also faster.
The end-user experience is what matters. I’ve rooted for the Surface Pro X since its arrival. But the performance has been slower and software has been limited. While the back-end experience might be similar, the results in everyday use have been not. Snapdragon’s new chip has raised hopes once again (particularly when you see who created the new tech). But let’s see if the hardware will give us similar performance that we see on a M1 MBA.
One of the claims Apple made about their emulation approach was that it would improve over time. The first time it translated X86_64 code it would be slow, but the second time it would be much faster. Can you think of a way to test this? The understanding I have of how this worked, is that the translated code would be stored, and re-used the next time it was needed.
@@JxcksonSF The way it was explained: “If an executable contains only Intel instructions, macOS automatically launches Rosetta and begins the translation process. When translation finishes, the system launches the translated executable in place of the original. However, the translation process takes time, so users might perceive that translated apps launch or run more slowly at times,” So, every component that is translated is saved as an Apple Silicon native executable.
This seems like a relatively simple Just-Ahead-of-Time-like optimization that doesn't suffer from any big obstacles. This is already a super common idea in other corners of the tech landscape e.g., installing apps on Android, the Julia programming language, and so on. Considering windowsy things like powershell or dotnet already do optimizations like this, this is probably already planned / implemented.
I've been using it a lot for the Raspberry Pi 5, and the support has been impeccable. I haven't run into any software that didn't have an ARM build available
@@1funnygame I did my Engineering final project on Raspberry Pi 4b and was truly amazed by it's capabilities. It even ran a full CNN model i did for my project, although I was a little annoyed by Pi team updating the Pi Camera libraries and it took me some time to figure out the new functions and how to use them.
I also did a few tests with box64 - the most popular Linux solution for x86-64 emulation for arm64. In all my test box64 was quite a bit slower than both Windows and MacOS provided emulation.
@@Silent.killer_007 There are already some projects that do that to some phones. I can't think of which off the top of my head, but I very strongly remember seeing some older Snapdragon phones getting WOA ported to them through software wizardry beyond my comprehension.
Thanks for getting the hard numbers on this. I think because I ARM translation got off on a rocky start on Windows, it got a bad reputation. For example, a client of mine had all kinds of issues running x64 code on their Surface Pro years ago. Mostly it was just lack of compatibility, but those were early days. I think because Apple comes out the door 100% working, and has a very good hypenmarketing system, there's just a complete different perception in the two companies. Now, I'm watching this 6 months later, and Microsoft just announced a whole bunch of new ARM "Copilot" computers, two he translation and compatibility is probably even better now, or at least fully matured.
Most people comments about microsoft x86 emulation might from before volterra, it was a mess at the beginning compared to apple, but it not only improve but also show us what can be done. Wanna see what X elite can do, hopefully the game emulation scene can get as mature as apple's one is now.
@@hanspeter9592 I liked being an insider, never noticed any degradation in performance, and at times noticed nice bump, I'm not on supported 11 hardware and 11 ran faster, but I had to go back to 10 when I sent the laptop in for accident insurance repair. Make sure you get constant images, especially of the build before you begin, after a short while insider deletes your on drive roll back image. In other words, of course, keep current images and a permanent image of the build before insider
I really like to see the application you wrote for the test. Window is heavily using dll’s even for standard c library functions. So how sure are you that it didn’t use arm based code on windows?
The “not actually emulating x86” revelation is major, and the new Snapdragon chip is a critically important recent update to consider surrounding this topic.
It may be that the Windows emulation has improved over time. IIRC when the Surface X came out, benchmarks showed that emulated software performed much worse vs native. Then when the M1 Macbooks first came out, reviews were showing much better emulation performance vs. Windows. It also could have been the issue you mentioned where MacOS still runs apps with the Arm library, although it was so early in the Apple silicon lifespan that I'm not sure if the apps had a fat version at the time. I don't remember all of the reviews I watched covering both, but I remember LTT being one of them.
True, i also remember something like this, but the problem here is that it was 3 years ago, and people still use that as excuse, but it seems the Windows 11 inside emulator is better like the individualy installed versions in Windows 10 (so when the M1 released). Good to see even Windows are serious about ARM.
@@TamasKiss-yk4st Well to be fair, Microsoft hasn't really made any splash about Windows on ARM, so people probably assumed it was dead or not a priority. We're probably going to see that change once devices with the new Qualcomm chips launch and Microsoft has some sort of event.
Gary, I'm sorry, but this is a terrible explainer. Apple does have a real technology advantage in this area against Windows on Arm. (Or at least they did as of a year or two ago.) The first part of it is memory ordering. Loosely speaking, this refers to the order in which an observing CPU core sees memory writes generated by other processor cores. x86 implements an ordering model called TSO, in which all writes are observed strictly in program order. Arm has a weaker model which permits some reordering - the writer might think it wrote thing #1 followed by thing #2, but an observer could see write #2 before #1. The practical implications of this are that (a) Arm processors can gain performance thanks to the extra reordering possibilities but (b) programs written for Arm may need more explicit thread synchronization when two threads interact. What does that have to do with emulation? Well, if your Arm processor takes full advantage of the reordering possibilities permitted by the Arm spec, every emulated x86 memory write will need to be treated as a thread synchronization point. Most memory writes aren't actually critical to interactions between threads, but the emulator has no way to guess which ones are important and which aren't, so it has to treat them all as if thread safety depends on it. Doing this in an emulator is expensive! It adds a lot to the count of Arm instructions executed per x86 instruction, and the extra instructions are relatively slow. For a while, Windows-on-Arm offered users the ability to tune emulator settings on a per-app basis to basically ignore this problem (risking bugs and crashes) in return for better performance. Worked great for applications that were completely single threaded, but not a great idea for anything with multiple threads. What did Apple do to address this? They added a custom mode bit to their Arm cores which enforces x86-style TSO memory ordering instead of the looser Arm ordering model. Whenever the macOS kernel starts running an x86 process, it shifts that CPU core into TSO mode. Hardware TSO support greatly reduces the overhead of emulating x86 in a completely thread-safe and correct way. The next piece is what kind of emulator Rosetta is. It actually supports two modes, JIT (just-in-time) and AOT (ahead-of-time). The JIT mode is a fallback to support self-modifying x86 code. In AOT mode, the first time you run an x86 binary, Rosetta completely recompiles it to Arm code, caches the results on disk, then launches the cached Arm binary. Subsequent runs skip the recompilation step and just launch the Arm-ified binary. As of a year or two ago, as far as I'm aware, neither of these pieces of technology were available in any WoA system - WoA's emulator was pure JIT (more runtime overhead), no WoA silicon implemented TSO, and even if it had done, Windows' x86 emulation didn't support it. I am not current on new events in this space, so some or all of that might have changed, or will in the future. (In particular, I expect Qualcomm's Oryon to support TSO - its CPU core was designed by a team lead by Gerard Williams, who was formerly employed by Apple and led the team that designed M1.) By the way, the AOT mode means there is a possible flaw in your benchmarking methodology. If you generate an x86 binary (whether by compilation or LIPO-ing a fat binary), that invalidates the AOT cache for that binary and the next launch will force Rosetta to re-translate it. This is a large amount of overhead and, depending on how you did your testing, could have skewed your numbers a lot. Rosetta users will normally experience one oddly slow program launch followed by excellent performance for months (basically, until either Rosetta self-invalidates the cache because Rosetta got updated and they want to re-translate, or the x86 program gets updated forcing a re-translation).
The main reason why Windows x64 emulation is worse than Mac is due to the fact that only on Windows are some applications not properly working or failing altogether due to the used Intel math library or R not producing the same results as under actual x64 chip. Point in case Python + Pandas or own source compiled against Intel Math library (fails when executing Intel library calls) or Intel versions of R fail or break at times when running in the x64 emu on Arm. The same can be found when using commercial products that rely on those libraries as well The speed, while important, doesn't matter as much as the quality of the emulation. Also, I'd actually argue that it is a better solution if your emulation can map system calls to native Arm libs rather than to x64 libs if it is transparent and results in faster speed. This is not cheating by Apple but by design and the superior solution: faster and less error-prone when you reduce the emulated code execution.
Interesting topic. My guess as to why people have not responded with the facts that macOS on ARM performing better than Windows on ARM is because its not about the quantity and benchmarks, but the behaviour and experiences of how well the apps run on those platforms. So it's things like the number of apps that are supported, how well they run, signs of slow downs, glitches, etc that are harder to quantify (unless we conduct surveys with users). So making use of ARM libraries when available is a good optimisation technique, thus providing better experiences. But there are limitations, such as the lack of nested virtualisation if you're running VMs.
Maybe, but nobody replied with talk of those things either. The actual reason is that someone probably said it wasn't good in some review on a popular website and everyone just believed it and continue to regurgitate the same stuff without actually verifying if it is true or not. This phenomena doesn't only apply to this subject but many. I am kind of acting as a myth buster in that sense.
Additionally, didn't AppleSilicon have hardware to assist with x86-64 emulation? It was something to do with memory, but do pardon. My memory is hazy since I'd read about it when M1 initially launched with Rosetta!
@@GaryExplains Thanks Gary. Appreciate what you've done here. Granted I don't have evidence to suggest this, but it just feels that Apple's has done a really good job in implementing and providing developer support for ARM. I guess the years of experience the've had with iOS contributes to this. My experience with desktop Linux on ARM (via Parallels and Raspberry Pi) is quite good but rather limited (e.g. Linux Mint is not being available for ARM, some tools and libraries not available). As for Windows, I can only test this on Parallels (so I can't test WSL), but I'm surprised that some games on Steam runs well (like Dying Light). That said, I often can't help resorting to x86 when running desktop Linux and Windows for the better experience.
@@shahnawazshahin3781yes that is correct. The memory does assist in a way as the memory in apple silicon devices is laid out and designed the way x86 based systems memory is. As apparently ARM based systems use a different memory design. So apple gets the best of both worlds by using an ARM processor but having memory built the x86 way. This means it's likely impossible to get ARM windows on an ARM based MAC. The processor is correct but that OS would not be designed for how apple is doing the memory in the system. Apple does it this way for the best of both worlds I guess. But it's all a custom build.
Windows just did not have competitive ARM hardware to run on compared to Apple silicone so people just assumed it ran poorly when the reality is it was running on much weaker hardware. Should be interesting to see how Windows & x86 emulation on Snapdragon Elite will perform in real life now that it's on a comparable platform to the M series.
Perhaps I'm just dumb, I'm not a developer, but isn't this test mostly semantics? Maybe Rosetta 2 isn't strictly emulation, but with the weird ARM stuff Apple uses with it, the end result for the user is a pretty seamless transition from the debut of Apple Silicon. I know personally, the reason I thought Windows on ARM was so bad was that the Surface Pro X got absulutely roasted on release for being nigh unusable with most x64 applications. It seems like, instead of being like "Well when you make the experience completely like for like, they're both as slow" the better option would be "Make sure Windows 12 or whatever release brings ARM mainstream pulls the same under the hood sleight of hand Rosetta 2 did, because the transition will be much slower and more complicated with the more fragmented Windows ecosystem, so any advantage they can get will be even more important."
Note that Microsoft has officially cancelled support for Windows 10 on ARM. So there is only Windows 11 on ARM. It lives happily within a Parallels Desktop VM on my Mac mini and receives all patches and function upgrades including the recently released 23H2. I bet the claims of Rosetta 2 being the better "emulation" stems from Windows 10 on ARM which had x86 emulation only and it was a real emulation, whereas Rosetta 2 uses JIT compilation of x64 code to ARM. Windows introduced JIT along with the x64-Support in Windows 11 on ARM. On Windows 11 on ARM, JIT compilation is only available for x64-Code (as it is in Rosetta 2 as there is no longer support for x86-Code in macOS for years now).
This makes a lot of sense if one think about the incentives. Apple wants the devs to quickly port apps over to Arm, so they only care that x86 just works and don't care too much about speed. Microsoft knows that a lot of devs will never port to Arm, hence they need to optimize better.
As someone who prefers Apple (wont call myself a fan boy, but know people will call me a fan boy), the reality is that up until now (with the release of the snapdragon X elite) Windows didnt have a ARM based chip that was comparable to the Apple chips (meaning that the previous ARM chip that the Surface used wasnt as good as Apple Sillicon), therefore in real world use you will always have the experience the Apple emulation of x86 to be better than Windows. I think it is only now that it can be possible to really compare the two. I do think that because Apple has moved away from x86 machines as a whole forcing developers to create native versions, that Apple will will be beter than Windows on ARM (as great as the SD X Elite is I dont think that it is enough to get developers to create native ARM versions and therefore will always have to emulate programs and as mentioned in the video native is always better than emulation
@@SunsetNovaIntel 14th gen is faster and when comparing against Nvidia GPUs it is not even a fair game. Additionally Apple Silicon cannot be upgraded, your only advantage is on power consumption which provides impressive battery life but that's it mate.
Very cool and great to know👍 So why Apple silicon always wins against Windows ARM PC? Better chip & code optimization? Or is it because till now, with the X-Elite chip released Windows never had similar high performance ARM chip like that comparable to the Apple’s Mx family?
@@PJSOFT Nuvia (ex Apple chief chip designers) was developing custom Arm server cores which Qualcomm adopted after their acquisition and is targeting for the Windows PCs. This is why their cores in comparison to Apple cores run with higher wattage and lower efficiency (efficiency cores r also missing on the X-Elite chips). What Apple does incredibly well is their ULTRA efficiency on both HW & SW side where both of these worlds r amazingly well connected and optimized. U can say that Apple's HW architecture (not just cores or chips) is designed specifically for the SW to run faster and more efficiently. This "only Apple" advantage gives Apple incredible control=power and always better performance per watt in comparison to X-Elite and any other Arm based SoC with of course almost endless budget to afford latest and most advanced chip manufacturing/packaging/interconnect processes.
I can see the need for such comparison but I think there has been enough benchmarking of the M1 vs other Arm laptop processors. Doesn't add much at this point. Also for video encoding the test should include whatever hardware acceleration is available. When the Snapdragon X Elite is out then this will certainly need revisiting.
Alright this is really good to hear. I think the main difference now is the level of native support for Arm on Windows vs on Mac so that transaction layer is unfortunately going to be used much more frequently on Windows compared to MacOS. Since MacOS's primary architecture has been ARM in new PC's since M1 came out in 2020 compared to windows where it is much less. Microsoft quoted a piece of research by Counterpoint which stated that ARM laptop marketshare is 14% right now but that includes Apple. There is a Tom's Hardware news story from 2022 that said that Apple had 90% of the ARM pc market. From both of those reports I would generously estimate that Windows on Arm is 2% of PC marketshare which is something that Microsoft is going to have to put in a lot of effort to change and only then will most devs care enough to make ARM versions of their apps.
The problem is emulation: Apple forced software companies to compile after some time all their software to ARM, so currently there is no problem with new apps. Microsoft cannot do that.
Now I just imagined implications of Apple selling arm64 CPU in the wild to Windows hardware vendors... crazy idea, maybe I've been drinking too much coffee today... Gary, great review and explanations again, thanks!
I recall Adobe announcing arm. Development of their suite back before apples switched to m1. I was mainly excited because of the possibility of the native version being rewritten and ported to the iPad but given this. Knowledge I’m excited to see when a surface book ships with a snapdragon elite
What I'm missing here is more technical detail on the character of your own test code. What kind of CPU load was it? Was it more arithmetic kind of computation? Did it access a lot of memory? Did it have complicated branching structure? Was it single-threaded or multi-threaded? Did it use x-86 extension instructions? How did the first run differ from the subsequent ones? Etc. It would be super interesting to see how different kinds of load behave in the emulation environment. In the HandBrake case, for example, you can see that the code is most probably heavily low-level optimized for the native architecture. Anyway, the point of your video - negligible difference between Mac and Win low-level emulation performance - seems to hold pretty well and that's great news. Let's see how Microsoft solves the end-user Win-on-Arm experience.
What I'd love to know, is how good Linux support will be on the new Snapdragon X Elite Laptops. I know native software support is actually pretty great, thanks to both RaspberryPi & Neoverse servers. But I heard from current Windows Snapdragon device owners, that boot & driver support for installing Linux has been fairly bad for the most part. Hope that changes, if it hasn't already. I'd love to have a Snapdragon X Elite Linux Developer Laptop.
One thing I will say is that even if the emulation is just as good in either, developers will go to arm quicker on macOS due to it being a forced step forward, whereas windows isn’t as straightforward, but it’s good to see windows on arm
The Windows problems were not related to the underlying platform, but wit the stubborn wish to make us use that modern UI/windowsRT/whatever. If they compile everything, it will be Ok. It was in the past, there was NT for many platforms, Windows CE was compiled for many CPUs, I for once remember compiling for at least 5 different processors and I can't remember how many platforms with them (had about 30 targets), but there was no CPU transaltion in CE. Other thing to remember is that initially Windows NT was in then called "p"-code and everything was translated! And this was when having 32 megs of RAM required you to be quite a rich person. So, the history is long and Windows is in that game from the beginning, but today considering that many people call the front end UI an Operating System, the difference from decades ago is that everybody can talk and not only those who know what is actually inside the devices.
One has to write x86 code to specifically use instruction set like SSE2 , Larger virtual address space, various types of modes. This should be job of linker and complier, which if not configured, would default to most optimised binary.
Thanks for the comparison, it's really interesting to see how far emulation has come now that Microsoft is releasing consumer hardware with the Snapdragon Elite chips.
This was really useful. Thanks for taking the time to share the stats. It’s impressive it works at all. It’s nice to have options, though it’s slow enough if wasn’t viable for our use case. Half the speed meant wasting a heap of developer time waiting for tests to run. We wanted to keep it simple when our business transitioned to ARM a few years ago. We aligned our hardware refresh cycles and deployment planning to do it in one step. We adopted ARM workstations and moved our production load to AWS Graviton processes on the same day. In the end it was as simple as changing a flag in a docker build command and changing a setting on AWS. Roughly speaking, it’s working out about 40% cheaper than x86 was. The monthly AWS savings paid off the new workstation costs in under a year. The only x86 processor in my life is the one in my gaming PC.
Except obviously they are different on each platform, so other than the name i.e Microsoft Word, there is little commonality between the actual code running.
@@GaryExplains and I think many people want to know how smooth or buggy they are. It's useless if it runs everything fast but crashes every 10 seconds.
I say Rosetta 2 is better than Windows emulation layer not based on raw operation per operation performance but looking to what is able to run and whatnot, the vast majority of x86 games that you try to run on Windows on ARM would not work or work terribly unlike on macOS, and don’t get me wrong I’m an avid Windows user, but I would like to see a comparison of Shadow Of The Tomb Raider x86 running on Rosetta 2 and Windows on ARM and see how it behave
@@GaryExplains To be fair I don’t think is as much GPU performance issue than it is the plethora of graphic APIs and legacy versions of them. Apple may decide to only support in Rosetta 2, Metal and a deprecated version of OpenGL and get away with it as most games would run with the implementation they have on that, if the software used something different would be “that old” that it wouldn’t run on a x86 current macOS anyways. While Microsoft to get a emulation layer as useful as Apple in apps that rely on GPUs need to implement a lot of versions of DirectX, OpenGL and Vulkan and I think the DirectX front is what is weighing the emulation layer down, is hard work but I think they should put more effort in making all games work, albeit slower, right now many will crash and give errors, It also may be a problem older versions of Visual C++ redistributables, but to be honest I don’t know how it behaves on that front. I would love if the percentage of success in running x86 programs was equal or higher than macOS, but doing so will essentially require much more work due to all the legacy stuff, I think
As the former owner of the 1st gen Surface Pro X, (Boy was that a mistake), the X86 emulation was initially limited to 32 bit code and was bloody awful and very slow. Videos like this showing an M1 Macbook Air running Win10 via Parallels vs An SPX showed that something was wrong, either with the SQ1 SOC or Win10. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-4p_7GqF0nTA.html Cue lots of "the fastest Win 10 ARM laptop is a Mac" stories.
Could it be that the code tested is IO/memory bottlenecked on the Windows device, and therefore the emulation penalty is irrelevant on Windows, but relevant on the MacOS device (because it has higher memory bandwidth and therefore CPU bottlenecked)?
@@GaryExplains OK. I can't see any new code specific to this video. In any case, I hope you're right, as I am Windows fan and jealous of Apple Silicon... but the first test result seems odd which is why I've come up with the memory bottleneck theory. Hopefully your test encourages other people to do similar testing, instead of assuming Rosetta is superior. 🤞
For someone who had an iBook 12" in 2004, a MBP 13" Retina thingy in 2007, a MBP 13" Retina thingy in 2013, and now a MBA 13" M2 thingy in 2023, all while switching from a PC laptop in 2004 due to Unix/Linux university requirements, and using Windows 7/10/11 via BootCamp or virtualization the whole time ... I'm just glad they get faster and more reliable while remaining dirt cheap by 90's standards. $0.02
Video isn’t as detailed as i thought it would be. Expected more info about how the two actually work. Apple iirc has things baked into the SoC to accelerate emulation that you don’t mention here. They actually got it to work on non apple arm SoCs but it wasn’t as good due to it lacking certain things that apple put in those chips (i think x86 instruction sets?).
I feel like this video misses the point? It doesn’t matter how good x86-64 emulation is in Windows if barely anything will run lol. It’s not surprising people think emulation in Windows sucks when the terrible smartphone-derived Snapdragon chips wheeze and fail trying to run… almost everything. Apple did the tough but necessary work to kill off legacy APIs/frameowkrs, 32 bit support etc. to ease the transition. The benefit of this was immediately obvious as basically everything worked on day one. My success rate with Rosetta 2 is 100% - every x86 binary I’ve tried has worked. Everything from basic apps to games just work. My success rate with Windows is nowhere near 100%. The only Steam games I’ve got working are freakin’ Peggle and Peggle Nights lol. It’s not surprising as that emulator needs to deal with the decades and decades of crap Microsoft refused to remove from Windows. Plus, both Windows and macOS will use native Arm libraries with x86 binaries where possible. To be clear, I have bought multiple Windows on Arm devices over the years to check-in on progress. I WANT Arm PCs to succeed.
@@bulletpunch9317 true, maybe smartphone derived is too vague a statement. It’s only really accurate for those early WoA devices that literally used smartphone chips (835, 845, 850 etc)
@@bulletpunch9317 8cx Gen 1/2 had a wider memory controller, more GPU cores etc. compared to the smartphone SoC of the time. They were ok (or rather, would’ve been ok if Windows on Arm wasn’t so dependent on emulation 😒).
After watching this video, I'm unconvinced, you said you would bring evidence & we got graphs & two tests (very little evidence), one showing Windows on ARM was better the other suggesting Apple silicon was better. Windows emulation works which is the important take away.
It's not that macOS does it better in terms of performance, it's a matter of reliability. I used Windows for ARM and had many bugs and failed app startups with x86 code, it just didn't work or crashed ever so often than Rosetta on macOS. Apple did it first and it was robust since day 1, Microsoft still needs some time to polish it up.
there are 2 things here: 1- windows’ problem is that it relies on other companies hardware and other ARM chip makers haven’t reached apple’s silicon in performance and efficiency on laptops. 2- as you said transition from x86 to arm was mostly seamless for mac but it will take years for developers to adopt native arm CPUs.
@@GaryExplains I'm looking forward to seeing laptops and (mini) desktops using it. I think we very much need a power/performance revolution in general-purpose personal computing.
@@GaryExplains It’s close to M2 but still behind M3, and M3 is already released to the market while it probably takes a year or two before we see proper windows laptops with X elite and till then there may even be an M4! I’m not an apple fanboy and I don’t even use a mac. personally I like PCs much more but the truth is apple is a few years ahead of everybody else in the arm laptop and desktop computers market. they did fantastic job in transitioning their platform to much more efficient arm architecture.
@@GaryExplains And I think I said proper laptops, no? by the way the snapdragon itself compared it to M2 and on the same wattage it falls slightly short comparing to it. M3 computers are already in the market and x elite, an unreleased chip is already behind it! You are comparing a somewhat paper product to an already stablished platform in its third generation.
Surprising. I remember when Windows on Snapdragon first became a thing the reviews showed AWFUL emulation. So is it that SoCs are way faster or did Microsoft make additional optimizations?
Thing is, the emulation never has been awful - but no-one, who was claiming that the emulation was awful, did really compare the emulated performance vs the native arm64 performance but compared the emulated performance vs the performance on a much faster Intel CPU.
You can sometimes fool most of the people, and some of the people most of the time, but you can't fool Gary - he rolls his own tests and _measures_ ! 😀
This is what I've been holding out for. I'm going to wait another generation and probably pull the trigger on a system with one of these Snapdragon chips. I'm also very interested to see what x64 emulation on Linux is like.
Great video, Gary and your methodology is spot on. What important is that it is not your opinions or based on hearsays (what he said, she said). Anyway, it is good to know (and expected at least to me) that the emulators performance are almost similar on Windows and MacOS. Ultimately, these emulators won't be needed some years later down the line because nothing beats native code. It is interesting to speculate that perhpas in the future there will be split between ARM64 for mobile computing and x86_64 for desktop with regards to Windows. I don't think that x86_64, Intel, AMD will disappear into the ethos very soon.
This makes sense. Windows performance even as VM on Apple Sillicon is commendable. I don’t know why so much people lash out to Windows, when it’s clear that there hasn’t been ARM hardware up to the task for Windows… until now with the Snapdragon X. But the 8cx series has been a disaster, expensive and underperforming. Was meant to compete with Intel Y series, just as the M-series took off.
Thanks Gary, that's exactly what I expect to see on youtube. When someone states something, it should be backed up by some tests. But there are still some kinds of things I don't understand well. There are different instructions, some may be better emulated on one platform, some on the other. It would be nice to see that in detail. It would help to understand the difference in results between your code and HandBrake. Another interesting topic is gaming. Windows games rely heavily on DirectX and windows PCs GPUs have hardware optimized for it. What about Qualcomm vs Apple in that regard? Can we expect AAA arm games anytime soon? If you know anything about it, please, let us know.
The problem with this test is Windows' software ecosystem is much, much more complex than Apples' and Windows itself is somewhat more bloated than Macs by itself, so it doesn't speak to all situations or everyday software usage. Apples' more curated approach certainly makes it more agile in the software sphere.
I'm just looking forward to seeing Linux on these new DImensity and Qualcomm ARM chips. I've no need for Windows emulation. I have to say that Linux on a M1 Mac via Asahi Linux looks VERY promising, indeed. Here's hoping I can just run straight Linux on one of these new ARM chips.
@@garrusvakarian8709 Not bad at all considering the team needs to reverse engineering the Apple hardware to write the software driver for it. It is not a easy task. Let me quote an example. My Lenovo notebook comes with a Intel wifi bluetooth chip. There is no Hackintosh driver for that chip. Ten years of Hackintosh and the community cannot write a driver to support the chip. Writing software driver by reverse engineering the hardware is no easy task.
@@garrusvakarian8709 Yes... The GPU isn't at all a problem, but having to use BT for audio can be a bit wearing at times. I doubt it will be a problem for all that much longer.
A very good video Gary. Well done for all the testing and coding. Like you said, the general opinion on the internet for years has been that MacOS emulation is far better than windows and clearly this is not the case. 👍👍
i don't care if one emulation is fast or slow, this emulation is most important for old software that assume old and slow hardware, and in that case what matters is that they work at all, and that they have less bugs
Did you even watch the video? How can current x86 software for Windows be considered as "old software that assume old and slow hardware"??? I am very confused.
@@GaryExplains i did watch the whole video. sure there are also current x86 software that do not assume old hardware, but i am not worried about them because both the software development side and the windows/mac side will make sure they run smoothly on arm. i am much more worried about the old software that will be neglected
A hypothetical ARM Steam Deck is a really interesting device, as it. either forces games to work or drives emulation performance forward to get them playable, similar to the advances in Linux compatibility we see through Steam OS right now. I could see them sticking with AMD for the GPU as that relationship seems strong. Maybe a future Samsung partnership would be what makes that happen, as they've already had mild success with RDNA+ARM SoCs.
So, when Gary saw the macOS Rosetta apps were near-native performance, he realized “oh shoot, the data doesn’t look the way I want it to” so he dug around and explained it away. Then when he achieved near native on windows (with his own super secret compiled software that no one gets to see) he took it at face-value. The surface pro X had windows on arm and it was a disaster from day one. Unusably buggy and slow. But Gary disagrees.
My issue is the Microsoft U.S. business model that forces their eco system with every release or update and the amount of time I have to spend to automate and evaluate the virus issues that Windows has vs the Mac or Linux systems that I have which is near nil. It is the operating system not the hardware from my frame of reference.
I’m (pleasantly) surprised by the MS results because I’ve heard their support of ARM was relatively lackluster. Maybe they’re lackluster in ensuring programs will work properly, or they’re lackluster in marketing, or maybe I’m just uninformed. 😊
Their original foray into ARM was...lackluster. Partly due to hardware, partly due to software. I'm hoping things will be much different now that there are excellent ARM CPUs available for them to use.
Did you run it multiple time? To the best of my knowledge on Mac OS (and in Windows), the translation from X86 to ARM happens on the first run and the result is cached. So you have to ensure that you are not including the translation process time in one "branch" and not the other
Gary just a simple question. Are you optimistic about where ARM is going on Windows? Do you think we can have a small and light alternative to the M type Macs. I want an powerful and efficient Windows laptop. I don't want to buy into the Apple eco- system as I prefer to use Windows and Android in PC and mobile.
Doesn't actively insuring that ARM libraries _aren't_ used cripple the test? Why not run both allowing the native systems to choose the best choice - which is what consumers would actually see when running their legacy software?
I excited for Nvidia drivers to support windows in arm (assuming they don’t currently) if I could plug an eGPU into my M1 Mac and have the portability and battery life but then gaming power that would be amazing
@@michaelcorcoran8768 - the product needs to be available to buy before it can be a competitor. Also bear in mind that much of the software that runs on MacOS is now native and x86 is only the exception. So although the Elite chip will provide great performance when it comes out, it will only provide exceptional performance with native code. As always 'developer, developers, developers' - they'll need to get serious about recompiling otherwise apps will run slower than native code
@@GaryExplains I've subscribed to your channel, I respect your content but if you are going to say that most internet claims about apple's superior implementation are fake then we need some facts, we can't just rely on your words. It would be helpful if you could add descriptions with links to backup your claims so we all can see for ourselves.
Thank you for the interesting video. Speed of the translated code is important, but even more important, I think, is accuracy of the translation. That is harder to check because it means running translated code of many complex programs to ensure that they are behaving properly and there are no errors. Adobe Lightroom Classic, Photoshop, Premiere Pro, Excel, games, etc. I suppose older pre-Apple Silicon versions can be found that are not fat universal binaries which could be used on Mac to try and get a true comparison of Apple Rosetta 2 translation to Windows translation.
Thank you Gary for calling out claims with no evidence, that is always important. However, I would like to call out some flaws in your comparison. Your final test does show that the performance of a well known, tested application performs similarly on Windows and macOS, but that isn't the whole picture. In the beginning you talk about how you always see people saying Apple's Rosetta is better, but neither of the two examples you show say that. You only show examples of the "Windows can do that?" comments. Because of that we don't know what exactly the people were suggesting is better. Were they all about performance, or about the whole system? You showed that the performance is similar, but you also stated all the facts that show Rosetta, as a _whole_ is better's than Windows system, except you were out to disprove all the commenters so you didn't see what was right in front of you. 1. Windows 10 doesn't support 64 bit apps. Rosetta 2 has done 64 bit apps since day one, so all versions of macOS can run 64 bit Intel apps. 2. Fat binaries hide all of this from the end user (except when developers don't provide the fat binary and make the user pick the right one to download) Let me explain Rosetta 2 supporting 64 bit from the beginning matters because _many_ people don't want to use Windows 11, so 10 not having 64 bit support is a _deal breaker_. You yourself showed how good fat binaries in your video, but in a round about way without giving any credit to the beauty of it. In fact, you were kinda bashing on it because it made your testing harder. But to the end user the fact that you can't easily trick the system into using the _wrong_ code is awesome! You are going to be using the right code for your architecture without thinking about it. Huge win. On Windows they are separate binaries and the user has to somehow know that if they replace their old one with the new one it will run better for some reason. Not an issue on Macs. (If the devs make the fat binary.) Apple has the win here in my books because they were first _and_ more complete, but it is great to see that Windows emulation is good too! Also, a single real world code test isn't a complete comparison. No widely accepted scientific theory is based on a single point of evidence. Your point is a good one, but it is just one. And I'm only counting HandBrake here because we can't see your code so it is impossible to see why it would perform so much better on Windows than macOS, and you didn't even bother to tell us _what_ it is doing! You probably just did one thing that Windows emulation happens to be better at, but Rosetta 2 is better at other things. That is why we need a spread of tests, and of code all of us can actually run and see, so we can test what end users will get out of the experience. And a 10% advantage to macOS is no small feat - that is a whole generation or two of CPU advancements. ------------- Regarding your remarks about Apple's 'closed garden', this is exactly why Apple keeps tight control over their developer ecosystem. They don't have to deal with devs lagging behind the times for 30+ years because they can't be bothered to use the new API. As an a macOS developer it can be annoying at times, but I know the constant push to keep my code up to date means my users (and I) are getting the best and newest features.
Does Rosetta 2 also use ARM code for other things than benchmarks when it is supposed to translate (without being fat version)? Which might also make it feel better than what it is. I have probably been trainted how poor the Windows ARM translation has been early on and it probably doesnt help the ARM processors for Windows hasn’t been as powerful as the M series. It is interesting whenever someone uses Windows on ARM Mac that x86 programs runs great which people have attributed to Rosetta 2 which might just be Windows own translation but because it got more powerful CPU it feels better than on a Windows ARM PC.
My issue with this video is it focuses on "speed = better" and when it comes to arm emulation speed is good to a point. Its all well and good that X emulator runs almost as fast as native, but if it can only emulate a single program. Personally i would say the emulation with the better selection of apps is the better emulator. I had heard that Apple's is better in this department as Apple put some X86 instructions directly on the processor and rosetta uses it when needed while snapdragon .... At least the 2015 windows snapdragon processors were pure arm. Not looked into myself so could be untrue