دهانه ساختار جدید از C# 7.2 معرفی شد. هدف اصلی آن اجتناب از تخصیص اشیاء جدید بر روی حافظه پشته هنگام کار با ناحیه پیوسته نیازمندی های حافظه دلخواه است.
با استفاده از Span، موارد زیر چند مزیت است که ممکن است ببینیم،
- از تخصیص حافظه روی Heap برای اشیاء جدید ایجاد شده خودداری کنید.
- تماس کمتری با فرآیند GC که باعث بهبود عملکرد می شود زیرا این زمان CPU می تواند برای فرآیند واقعی استفاده شود. همچنین نیازی به مدیریت اشیاء تخصیص نیافته نیست.
مثالی برای درک نحوه Spanمی تواند عملکرد بهتری ارائه دهد
قبل از اینکه بفهمید این Span در زیر چگونه کار می کند. بیایید یک مثال عینی برای نشان دادن استفاده از Span در سناریوهای بلادرنگ ببینیم.
در زیر یک بلوک کد وجود دارد که دارای روشی برای پذیرش یک رشته نام کامل و برگرداندن یک نام با فراخوانی زیر رشته در رشته نام کامل است.
public string GetFirstNameFromFullNameWithString() {
string fullName = "Sai Kumar";
string firstName = fullName.Substring(0, fullName.IndexOf(' ', 0));
return firstName;
}
string fullName = "Sai Kumar";
string firstName = fullName.Substring(0, fullName.IndexOf(' ', 0));
return firstName;
}
این یک مثال بسیار ساده به نظر می رسد، اما هنگام مشاهده نحوه واکشی نام از نام کامل داده شده، با فراخوانی یک متد Substring است و این منجر به ایجاد یک شی جدید دیگر در حافظه Heap به همراه یک مقدار پشته برای ذخیره این می شود