Hi Folks! In this post I am going to benchmark one application developed in Entity Framework .NET Core 6 (an application that inserts, updates and deletes 41 million rows - well, the deletion process is so slow it's not worth benchmarking). I will run it on Windows 11 Pro and Fedora 35 Workstation.
If you want know more details about the txt file used to import all the data, please refer to this post.
Clone the git repository here.
Let's talk about the environments (hardware and software) for both of the OSes.
Windows 11 Pro

The PC running the .NET Core 6 application on Windows is an AMD Threadripper 1950X with 32GB of DDR4@3600. The motherboard is an Asrock X399 Taichi and the SSD is an ADATA XPG Pro SX6000, 512GB (reads 2100MB/s, writes 1500MB/s). The OS edition is the Windows 11 Pro, version 21H2. The database server used was the SQL Server 2019 Developer edition.
Fedora 35 Workstation

The PC running the .NET Core 6 application on Fedora is the same: an AMD Threadripper 1950X with 32GB of DDR4@3600. The motherboard is an Asrock X399 Taichi, but the SSD is an ADATA XPG Pro SX8200, 512GB (reads 3500MB/s, writes 2300MB/s). The OS edition is the Fedora 35 Workstation 64 bits, Kernel 5.16. The database server used was the SQL Server 2019 Developer edition.
You might be thinking: this SSD is better than the SX6000, the application running on linux will perform better than the windows one. Yeah, but in reality the benchmark was a lot different. Let's have a look at it!
The Benchmark


As you can see in the charts, Windows took 4.185 hours to insert the 41M rows, while Fedora took 9.9 hours. In the update operation, the difference in performance is even larger: Windows took 5.4 hours to load and update all 41M rows, while Fedora took an astounding 19.4 hours. I'd like to say I am very disappointed with the linux performance, I thought it would be at least comparable with the windows environment.
I even ran the application with MySQL as the database server, but the performance didn't change.
Conclusion
Even though applications developed in .NET Core can be ported to Linux, don't rush to deploy them on it yet. It really is a shame the application performed so badly. Well, let's wait for .NET 7 then and see if anything changes.