First we’ll need to install the BenchmarkDotNet NuGet package in our project. Select the project in the Solution Explorer window, then right-click and select “Manage NuGet Packages.” In the NuGet Package Manager window, search for the BenchmarkDotNet package and install it.
Alternatively, you can install the package via the NuGet Package Manager console by running the command below.
dotnet add package BenchmarkDotNet
Next, for our performance comparison, we’ll update the Stock class to include both a traditional lock and the new approach. To do this, replace the Update method you created earlier with two methods, namely, UpdateStockTraditional and UpdateStockNew, as shown in the code example given below.
public class Stock
{
private readonly Lock _lockObjectNewApproach = new();
private readonly object _lockObjectTraditionalApproach = new();
private int _itemsInStockTraditional = 0;
private int _itemsInStockNew = 0;
public void UpdateStockTraditional(int numberOfItems, bool flag = true)
{
lock (_lockObjectTraditionalApproach)
{
if (flag)
_itemsInStockTraditional += numberOfItems;
else
_itemsInStockTraditional -= numberOfItems;
}
}
public void UpdateStockNew(int numberOfItems, bool flag = true)
{
using (_lockObjectNewApproach.EnterScope())
{
if (flag)
_itemsInStockNew += numberOfItems;
else
_itemsInStockNew -= numberOfItems;
}
}
}
Now, to benchmark the performance of the two approaches, create a new C# class named NewLockKeywordBenchmark and enter the following code in there.