Sử dụng Benchmark để đo thời gian query trong .NET
1. Giới thiệu về BenchmarkDotNet
BenchmarkDotNet là một thư viện phổ biến trong .NET giúp đo lường hiệu suất của mã nguồn một cách chính xác. Nó hỗ trợ phân tích chi tiết và cung cấp các thông số quan trọng như thời gian thực thi, bộ nhớ sử dụng và số lần thu gom rác (GC).
2. Cài đặt BenchmarkDotNet
Trước khi sử dụng BenchmarkDotNet, bạn cần cài đặt nó bằng NuGet. Chạy lệnh sau trong Package Manager Console:
Install-Package BenchmarkDotNet
Hoặc sử dụng .NET CLI:
dotnet add package BenchmarkDotNet
3. Đo thời gian query trong .NET bằng BenchmarkDotNet
Dưới đây là cách đo thời gian thực thi của một truy vấn LINQ sử dụng Entity Framework Core trong .NET:
3.1. Tạo một class Benchmark
Tạo một class mới và áp dụng BenchmarkDotNet để đo hiệu suất của các truy vấn:
using System;
using System.Linq;
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Running;
using Microsoft.EntityFrameworkCore;
public class MyDbContext : DbContext
{
public DbSet<Product> Products { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Your_Connection_String");
}
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
public class QueryBenchmark
{
private MyDbContext _context;
public QueryBenchmark()
{
_context = new MyDbContext();
}
[Benchmark]
public Product QueryFirstOrDefault()
{
return _context.Products.FirstOrDefault();
}
[Benchmark]
public Product QuerySingleOrDefault()
{
return _context.Products.SingleOrDefault(p => p.Id == 1);
}
}
3.2. Chạy Benchmark
Tạo một class Program.cs
và chạy Benchmark:
class Program
{
static void Main(string[] args)
{
var summary = BenchmarkRunner.Run<QueryBenchmark>();
}
}
Sau khi chạy, BenchmarkDotNet sẽ hiển thị kết quả chi tiết như sau:
| Method | Mean | Error | StdDev |
|--------------------|---------:|---------:|---------:|
| QueryFirstOrDefault | 2.345 ms | 0.032 ms | 0.029 ms |
| QuerySingleOrDefault | 3.456 ms | 0.045 ms | 0.041 ms |
4. Kết luận
BenchmarkDotNet là một công cụ mạnh mẽ giúp đánh giá hiệu suất truy vấn trong .NET. Bằng cách sử dụng nó, bạn có thể so sánh các phương pháp truy vấn và tối ưu hóa hiệu suất ứng dụng một cách hiệu quả.
Cảm ơn quý các bạn đã đón xem 😄♥️
All rights reserved