Yes… The Jetbrains guys has made me to buy a license for Rider IDE and here is why.
Well, I am a Visual Studio since its 2003 version (.net 1.0 and 1.1), and I’m very comfy when I use it.
It’s a 14 years friendship! But… sometimes we must to try something new, and I tried Rider on its first version (click here) and I abandoned it because it doesn’t worked with .net Core 2.0.
So, the version 2017.2 comes to light and everything changed!
Maybe you are asking yourself: “why .net Core 2.0 is so important?” and my answer is: Is 2017 and you need performance!
The .net Core 2.0 outperforms the Node.js, period.
You can find more information on these links (or in a google search “.net core 2.0 vs node js”):
This is why .net Core 2.0 is important to me!
Back to Rider!
A weeks ago I recieved this email:
Yessss! At the “what’s-new 1st line” I could read: “.NET Core 2.0” and I gave Rider a try.
RAM consumption: VS 1 x 0 Rider
Yes, Rider uses 2 times more RAM than Visual Studio. Why? Inspections, a lot of them!
Code Speed: VS 1 x 1 Rider
Scenario: create a Web.API using .Net Core 2.0 and a NUnit test project.
Visual Studio needs two steps, Rider only one and is faster to create the project and restore the dependencies. This is the 1st reason of the higher RAM consumption.
Visual Studio Step 1
Visual Studio Step 2
(there is a design inconsistency here? The previous step has a Dark Theme…)
Rider single step
The results are the same (rider on the left)
Creating the nUnit Project
Both of them are a single step creation! Right-click on the solution, Add…
Attention: starting a new test project in a old fashion way will cause an error! This project isn’t a .Net Core Project!
If your project in Visual Studio look like this…
If you insist, you’ll get an error when you try to build the application!
Delete it and start the correct way!
Its look like the .Net Core is not “native”… Weird… After all, in the .Net Standard, you don’t need to select the .Net Standard to create a test project!
None of them gave me a NUnit test option. How they act when I started to write a nUnit Test? Let’s see…
I changed the decorator in both classes and Visual Studio suggested to download the NUnit package from NuGet and use it, Rider got lost.
So… I needed to install the NUnit package by myself…
Step 2 – after the package installation, Rider now suggests to use the NUnit reference.
I have written a simple method that compares two strings and return true if they are equals, and, when you try to run the test…
On Visual Studio, it runs the test looking for a xUnit test and don’t found a valid test…
On Rider, it the test is disabled and, when you open the Unit Test Explorer, the Rider suggests NUnit3TestAdapter!
After install the TestAdapter, the test runs smoothly on both IDEs!
Conclusion on Code Speed
Rider is more consistent on interface and on inspections. You do not have doubt when you choose the correct project to start and, even if the project is originally to xUnit project, it understands that you are writing to NUnit test and it disable the test if something is wrong, and, in the case where we forced the error by do not install all necessary packages, Rider suggested the missing package.
Visual Studio leads you to an error by bad interface choice, by hiding the .Net Core test project in a .Net Core menu, when it doesn’t do the same for the .Net Standard.
Test capabilitties: VS 1 x 2 Rider
At the moment, I have access to Visual Studio Enterprise because the company from I work provides me a MSDN Account with a Visual Studio Enterprise License for my personal use, but… If I had to pay, I won’t pay 2.999 USD/year!
My “brazilian developer income” doesn’t allows me to do this.
But… It allows me to pay 17.90 USD monthly for the Resharper Ultimate + Rider Pack! I don’t use Resharper in my Visual Studio installation because the RAM consumption goes high and my personal laptop has only 8GB.
Said that, I don’t compare the Live Unit Testing from Visual Studio Enterprise with the Rider capabilities.
The test runs faster on Rider.
Code Inspections: VS 1 x 3 Rider
Visual Studio suggests using arrow function and Rider suggests made the method static.
Visual Studio Code Inspection does not show anything
Alt + Enter on method the refactoring options is shown
Rider Code Inspection, when it have a suggestion it shows four green dots
Hover the mouse over the four green dots shows the suggestion.
Alt + Enter on method shows the suggestion AND the expression body too (plus other refactoring options)!
While an “arrow function” doesn’t affects the performance, made a method static does!
The arrow function reduces lines of codes and makes the view of the expressions clearer, more readable.
A simple search on google “why use a static method instead a non-static method” returns this:
From the FxCop documentation:
“Members that do not access instance data or call instance methods can be marked as static (Shared in Visual Basic). After you mark the methods as static, the compiler will emit non-virtual call sites to these members. Emitting non-virtual call sites will prevent a check at runtime for each call that ensures that the current object pointer is non-null. This can result in a measurable performance gain for performance-sensitive code. In some cases, the failure to access the current object instance represents a correctness issue.”
The proof: making the method static made the test runs 6,25% faster in this simple method! Think about an entire application, it can be a huge gain if you consider all the hints!
Non static method (32ms)
Static method (30ms)
Visual studio can “act as the Rider” if you install the Resharper complement, but, the installation makes it very slow for me, that I have a 8GB laptop.
I go Rider!