Job.Dry (اجرای سریع آزمایشی) در مقابل Job.Default (اجرای کامل آماری)
Job.Dry فقط یک بار Warmup و یک بار اجرای واقعی را انجام میدهد تا سریع مطمئن شوید بنچمارک خطا ندارد، در حالی که Job.Default طبق روش آماری کامل BenchmarkDotNet چندین Iteration گرمکردن و اجرای واقعی انجام میدهد تا نتیجهای دقیق و قابل اعتماد آماری تولید کند.
| ویژگی | Job.Dry (اجرای سریع آزمایشی) | Job.Default (اجرای کامل آماری) |
|---|---|---|
| زمان اجرا | چند ثانیه | چند دقیقه |
| دقت آماری | پایین | بالا |
| کاربرد | دیباگ سریع بنچمارک | گزارش نهایی کارایی |
کِی از Job.Dry (اجرای سریع آزمایشی) استفاده کنیم؟
وقتی در حال نوشتن یا دیباگ کردن بنچمارک هستید و فقط میخواهید سریع مطمئن شوید کد کامپایل و اجرا میشود.
کِی از Job.Default (اجرای کامل آماری) استفاده کنیم؟
وقتی میخواهید نتیجه نهایی و قابل استناد برای مقایسه واقعی کارایی دو پیادهسازی داشته باشید.
مثال Job.Dry (اجرای سریع آزمایشی)
[SimpleJob(RunStrategy.ColdStart, launchCount: 1,
warmupCount: 1, iterationCount: 1)]
public class QuickCheckBenchmark { ... }
مثال Job.Default (اجرای کامل آماری)
[MemoryDiagnoser]
public class StringConcatBenchmark
{
[Benchmark] public string Concat() => "a" + "b";
}
// اجرا با: dotnet run -c Release
اشتباه رایج
اشتباه رایج اجرای بنچمارک در حالت Debug یا با Job.Dry و اعلام نتیجه بهعنوان معیار نهایی کارایی است؛ بدون Warmup کافی و تکرار آماری، اعداد بهشدت نویزی و غیرقابل اعتماد هستند.
جمعبندی
برای تست سریع صحت کد بنچمارک از Job.Dry و برای هر نتیجهای که قرار است در تصمیمگیری واقعی استفاده شود، حتماً از اجرای کامل Job.Default در حالت Release استفاده کنید.
