Sounds like clickbait, right? Fair enough, here's the TL;DR: We moved our Azure Web App from the Windows S1 plan to the new Linux P0v4 plan. Read on for the details!How we used to run our Orchard Core apps in AzureThose Orchard Core web apps of ours that aren't too resource-hungry (like the app running Orchard Dojo) we've been running on the Windows S1 plan of App Services. This now legacy plan provides 1 vCPU, 1,75 GB of RAM, and HDD local storage for a cost of USD 73/month. Not a lot of processing power, but it was enough if your requirements weren't high either. And it, as you may have guessed it, runs on a Windows server.We've done measurements before, and the Linux pair of this App Service plan performed worse. The newer Premium tiers, with newer hardware and SSD storage performed better, but were too expensive for our use-cases and the added performance wasn't necessary. However, two things happened since then: The S1 tier of App Services became deprecated, and a new, v4 Premium tier was rolled out. What's more, the lowest plan of Premium v4, P0v4, is actually cheaper at USD 53,3/month! This is a 28% cost reduction right off the bat, and it promised better performance, too, so we had to try it out. And this was a great success!Windows S1 App Services — the baselineThe test subject was our Lombiq Tenants Core app. This runs most of our own websites, including Orchard Dojo, dotnest.com (but not the sites created on DotNest), and our company website. This is how its performance looked under the Windows S1 plan: Not great, but not terr... No, at face value, it's actually quite terrible, with the 99th percentile being at 18 seconds for generating a server-side response. However, digging into the details revealed that the vast majority of requests that users cared about (e.g. excluding error pages that spambots hit) performed on an acceptable level, within 1-200 ms. Now, this is indeed not great, but not terrible either. Still, the average response time for all requests, even if this includes ones that no real person was seeing and one-off outliers, was 3,7 s. Can we fix this?The charts in this post are from Azure Application Insights, BTW, Azure's app monitoring service. We use it enhanced by our open-source Lombiq Hosting - Azure Application Insights for Orchard Core module, check it out!Linux wasn't always betterAn ASP.NET Core web app, especially in its source form but even when compiled to binaries, consists of a lot of small files, and it constantly works with a lot of small files too (like stylesheets, images). You'd expect that this is a clear case where Linux (with its usually used ext4 file system) has an advantage over Windows (with NTFS). Linux also generally has a lower resource footprint in itself, leaving more for the web app. So, it should just be faster, right? Nope!At least, it wasn't faster at the time when we compared the Windows and Linux S1 tiers. The average server-side latency was about 68% worse under Linux, although for a lower price. The tiny savings weren't worth the worse UX.But then the P0v4 App Service plan came.Migrating to Linux P0v4 App Services and reducing latency by 98%The new P0v4 App Service plan, which came out of preview and entered general availability in September 2025, offers still 1 vCPU but 4 GB RAM, and SSD storage. It also contains the latest hardware all around. So, we checked out how it performs in real life.Moving from a Windows to Linux App Service Plan is a manual process: You have to create a new App Service, configure every service connection and automation to use it instead of the old one, and deploy your app to it anew. It's a chore, but you have to do it only once. And this is your reward: As you can see, 50th percentile was reduced to only 39 ms from 226, and the 99th percentile from 17,8 s to 738 ms. The average response time on the Windows S1 App Service was 3,7 s, while on the Linux P0v4 one 77,5 ms. Let me write it out in a more obvious way: 3700 ms vs 77,5. That's a 98% reduction in latency! Which is absolutely awesome. There must be multiple generations between the CPUs and RAM of the S1 and P0v4 tiers, and I guess having an SSD and newer everything else helps too. More RAM surely does as well, although that was always enough before too.ConclusionMy recommendation would be to keep an eye on the offering that Azure, or your hosting provider, has, because the cost of compute is constantly coming down while performance is going up. With clever and not always ethical tricks, providers try to keep you paying ever increasingly more. However, the reality of hardware advances should eventually be reflected in your monthly bill and your app's performance metrics — you might need to work for it, though.Do you also want better performance for your Orchard Core or any ASP.NET Core app? Contact us and we can take a look!