منو سایت

مسیری برای بهبود عملکرد در NET 6

 تاریخ انتشار :
/
  وبلاگ
مسیری برای بهبود عملکرد در NET 6


در نیم دهه گذشته، شاهد بهبودهایی در دات نت از نظر عملکرد و عملکرد، همراه با چندین مؤلفه دیگر بوده ایم. مایکروسافت بارها و بارها فرصت های جدیدی ایجاد کرده است که با دیدن آن ما را به چهره تقریباً جدیدی از دات نت می رساند بهبود عملکرد دات نت 6.

یک سال قبل از جدا شدن مخزن Dotnet از شعبه اصلی خود، 550 درخواست دانلود بررسی شد، در حالی که یک سیستم کاملاً جدید در قالب یک به روز رسانی مهم و عظیم ایجاد شد.

می توان گفت که با به روز رسانی جدید دات نت 6 کاری وجود ندارد که توسعه دهنده نتواند با این پلتفرم انجام دهد. برای اینکه ایده ای به شما بدهم، JiT وجود دارد که اضافه شدن غیرمنتظره ای بود. کامپایلر Just-in-Time یک سیستم ارجاع داخلی را فراهم می کند که از نظر بهینه سازی ها از مزایای زیادی برای توسعه دهنده برخوردار است.

درست مانند این، چند افزودنی شگفت انگیز و مهم وجود دارد ویژگی های دات نت 6 که در بخش های زیر به آن خواهیم پرداخت.

مروری بر بهبودهای عمده عملکرد در NET 6

#1. JiT

از بحث ما به بعد ادامه می دهیم با استفاده از کامپایلر JiT در NET در بالا، درک کنید که کامپایل کد هسته اصلی هر برنامه کاربردی یا راه حل دیجیتالی است که تا کنون ایجاد شده است. بنابراین بهبود در تولید کد تأثیر چند برابری بر کل ساختار کد دارد. این شامل توانایی بهبود عملکرد، سرعت، تست، امنیت و غیره است.

با تغییراتی که در ساختار اصلی با آپدیت جدید ایجاد شده است، توسعه دهندگان از فرآیند تعبیه و مجازی سازی بهره مند خواهند شد. با استفاده از درون خطی، تماس گیرنده اجازه می دهد تا کد به طور مستقیم برای تماس گیرنده مستقر شود. این باعث صرفه جویی در زمان و تلاش لازم برای هدایت تماس از طریق سربار می شود، اما این یک مزیت کوچک است. مهمتر از آن، این سیستم محتوای تماس‌گیرنده را با تماس‌گیرنده به اشتراک می‌گذارد و امکان بهینه‌سازی‌های بعدی یا از نظر فنی «شامل» را می‌دهد.

مجازی سازی همراه با جاسازی کار می کند و بهینه سازی های بهتری را ارائه می دهد. با غیر مجازی سازی، JiT یک فراخوانی روش مجازی یا رابط را می پذیرد و مقصد نهایی تماس را از نظر آماری شناسایی می کند. این باعث صرفه جویی در زمان مورد نیاز برای یک رویکرد مستقیم به هدف و صرفه جویی در هزینه های مورد نیاز برای ارسال مجازی می شود. پس از تکمیل غیر مجازی سازی، هدف جاسازی شده در نظر گرفته می شود.

علاوه بر این، ساختار به روز شده JiT زبان میانی را مستقیماً به کد اسمبلی در زمان اجرا ترجمه می کند. همچنین به عنوان یک پیش کامپایل استفاده می شود که بخشی از سیستم بهینه سازی کد CrossGen2 است و با فرمت Ready to Run (R2R) پیاده سازی شده است.

# 2. تغییرات در انواع سیستم

تغییرات سیستم محور در سیستم دات نت تأثیر گسترده ای دارد. به عبارت دیگر، برخی تغییرات در جنبه های کلیدی سیستم می تواند تا حد زیادی در بهبود عملکرد و ساختار کلی کمک کند.

یکی از نمونه های اصلی این تغییرات Guid است. Guid یکی از ویژگی های دات نت است که برای ارائه شناسه های منحصر به فرد استفاده می شود. آنها می توانند برای هر تعداد چیز و عملیات باشند.

توسعه دهندگان باید این عملیات را به سرعت ایجاد کنند و با همان سرعت آنها را تجزیه و تحلیل، قالب بندی و اصلاح کنند.

یکی دیگر از به روز رسانی های ظریف اما مهم در اینجا این است Guid.NewGuid قابل استفاده در macOS پیش از این، به دلیل مشکلات عملکرد، این گزینه برای سیستم‌های macOS نبود. توسعه راه حل های مرتبط با macOS با استفاده از داده های خوانده شده توسط انجام شد / توسعه دهنده / تصادفیکه همان آنتروپی رمزنگاری را فراهم می کند.

اکنون، Guid.NewGuid جزء همان بیت های تصادفی قوی رمزنگاری را با استفاده از آن برمی گرداند CCRandomGenerateBytes.

در میان سایر بهبودهای جزئی، ما یک پیشرفت جدید داریم سیستم. متن سیستم تولید کد منبع JSON که بهره وری را افزایش می دهد. همچنین، FileStream بازنویسی شده است، که مشکلات عملکرد I / O قبلی را برطرف می کند.

# 3. حفاظت از لایه حمل و نقل

با به‌روزرسانی‌های جدید مؤلفه TLS، اکنون می‌تواند حتی برای راه‌حل‌های مبتنی بر لینوکس که قبلاً امکان‌پذیر نبود، اتصالات امن ایجاد کند. علاوه بر این، با ارائه پشتیبانی از لینوکس، TLS می تواند با افزایش سرعت تراکنش ها و فرآیندها، زمان لازم برای ایجاد اتصالات امن را کاهش دهد. در نهایت، ممکن است راه تهاجمی‌تری برای استفاده از فواصل در چرخه استقرار BigInteger ارائه دهد.

# 4. مجموعه ها و LINQ

نکته جالب در مورد این مؤلفه این است که در هر نسخه از دات نت پیشرفت هایی در انواع مجموعه و LINQ وجود دارد. هر از گاهی سریعتر و بهتر از قبل می شد.

این بهبودها با تغییراتی در اجرا می شوند واژه نامه زیرا به طور مکرر برای بهبود بهره وری استفاده می شوند.

در مورد دیگر، بارگیری داده ها از پایگاه داده، ذخیره فایل یا API برای ذخیره، ارسال، ارائه و دستکاری کاربران نهایی بهبود یافته است. این به این دلیل است که در میان تغییرات در ویژگی‌های دات‌نت، بهبود این فرآیندهای اصلی می‌تواند نتایج بسیار خوبی را ارائه دهد.

مثال زیر را ببینید؛

privateIEnumerable<KeyValuePair<string,int>> _dictionary =Enumerable.Range(0,100).ToDictionary(i=>i.ToString(),StringComparer.OrdinalIgnoreCase);
 	[Benchmark]
publicDictionary<string,int>Clone()=>newDictionary<string,int>(_dictionary);
روشزمان اجرابه این معنینسبت
شبیه سازیNet Core 3.13,224 ما1.00
شبیه سازیNet 5.02880 ما0.89
شبیه سازیNet 6.01685 ما0.52

مکمل‌هایی مانند این می‌توانند به طرز چشمگیری تغییرات عملکردی را در برخی موقعیت‌های خاص تحریک کنند. بنابراین می توانید از آنها استفاده کنید، اما مطمئن شوید که کاربرد و کاربرد آنها را درک می کنید.

# 5. C # 10

C # 10 به عنوان بخشی از بهبود عملکرد جدید در دات نت 6 و به روز رسانی ویژوال استودیو 2022 پیاده سازی شده است. این شامل ویژگی هایی برای کاهش استفاده با جدید است. استفاده جهانی بخشنامه و کار با استفاده های ضمنی برای همین هدف

سنتی استفاده كردن جهت ها و جهانی استفاده كردن این دستورالعمل ها در به روز رسانی جدید دات نت 6 با هم ترکیب شده اند و منجر به بهبود کلی در عملکرد می شوند.

جایی که استفاده های ضمنی به توسعه دهندگان اجازه می دهد تا فضاهای نام دات نت را متناسب با پروژه اضافه کنند، استفاده جهانی کامپوننت به شما امکان می دهد فضاهای نام اضافی را بیاورید و از آنها در طول پروژه استفاده کنید.

علاوه بر این، C # 10 ویژگی های بیشتری را به دات نت اضافه می کند و به توسعه دهندگان این امکان را می دهد که سریعتر و واضح تر کدگذاری کنند. چندین مزیت برای محک زدن دارد، از جمله یکی از آنها، HashData ().

HashData ()

این تابع هش داده ها را با استفاده از الگوریتم SHA256 برای رمزنگاری سیستم های امنیتی محاسبه می کند. مثال زیر را دنبال کنید؛

@page"/counter"
@usingSystem.Security.Cryptography
@usingSystem.Diagnostics
@usingSystem.Text
 
<h1>Hashing</h1>
 
<p>Time:@_time</p>
 
<button class="btnbtn-primary"@onclick="Hash">Click me</button>
 
@code	    {
privateconststringSonnet18=
@"Shall I compare thee to a summer’s day?
Thou art more lovely and more temperate:
Rough winds do shake the darling buds of May,
And summer’s lease hath all too short a date;
Sometime too hot the eye of heaven shines,
And often is his gold complexion dimm'd;
And every fair from fair sometime declines,
By chance or nature’s changing course untrimm'd;
But thy eternal summer shall not fade,
Nor lose possession of that fair thou ow’st;
Nor shall death brag thou wander’st in his shade,
When in eternal lines to time thou grow’st:
So long as men can breathe or eyes can see,
So long lives this, and this gives life to thee.";
 
privateTimeSpan _time;
 
privatevoidHash()
{
byte[] bytes =Encoding.UTF8.GetBytes(Sonnet18);
varsw=Stopwatch.StartNew();
for(inti=0;i<2000;i++)
{
        			_ = SHA256.HashData(bytes);
}
    		_time =sw.Elapsed;
}
}
روشزمان اجرانتیجهبهبود
هشNet 5 JIT0.454 میلی‌ثانیه
هشNET 6 JIT0.280 میلی‌ثانیه38%
هشNET 6 AOT0.017 میلی‌ثانیه38%

همانطور که در نتایج مشاهده می کنید، با این روش 96 درصد بهبود در تولید نتایج و عملکرد وجود دارد.

نگاهی به تغییرات عمده در ویژگی های دات نت 6

.NET 6 به روز شده بهبودهای عملکردی قابل توجهی را همراه با بهبود پشتیبانی ARM در ویندوز و مک اضافه می کند. همچنین شامل یک سیستم بهینه سازی پروفایل گرا (PGO)، API های جدید و غیره است. در اینجا مروری بر بهبودها و تغییرات اصلی است.

  • تست استرس تولید بخشی از خدمات مایکروسافت است و می تواند باشد توسط شرکت هایی که با برنامه های ابری کار می کنند استفاده می شود و برای پروژه های متن باز.
  • این یکی از آخرین نسخه های با پشتیبانی طولانی مدت (LTS) است که به مدت سه سال در حال اجرا است.
  • توسعه‌دهندگانی که روی مرورگر، ابر، دسکتاپ و برنامه‌های تلفن همراه کار می‌کنند که با فناوری‌های مختلف مانند اینترنت اشیا ادغام شده‌اند، اکنون می‌توانند کتابخانه‌های مشابه و کتابخانه‌های دات‌نت را به اشتراک بگذارند.
  • ما شاهد بهبود کلی در هر جزء، به خصوص در فایل I/O بوده ایم. به طور کلی، این منجر به کاهش زمان اجرا، تاخیر کم و استفاده از حافظه شده است.
  • از طریق اضافات به C # 10 شاهد چندین پیشرفت زبان در دات نت خواهید بود، مانند؛
    • سازه های ضبط
    • استفاده ضمنی
    • استفاده جهانی
    • قابلیت لامبدا (جدید)
    • مولدهای منبع افزایشی در کامپایلر
  • به طور مشابه، به روز رسانی های F # 6 شامل؛
    • به صورت ناهمزمان مبتنی بر وظیفه
    • اشکال زدایی خط لوله

اینها و بسیاری دیگر از بهبودهای عملکرد، ویژگی جدیدی را به دات نت اضافه می کنند که قابلیت های بهتری را برای توسعه دهندگان فراهم می کند.

  • در عین حال، بهبودهایی در ویژوال بیسیک وجود دارد که در آن تجربه بهتری از ویژوال استودیو برای فرم های ویندوز خواهید دید.
  • Hot Reload نیاز به راه اندازی مجدد یا کامپایل مجدد کد پس از هر تغییر را از بین می برد. به شما امکان می دهد همزمان با نوشتن کد و به روز رسانی برنامه، برنامه را به روز کنید.
  • به لحاظ سیار و توسعه وب اپلیکیشن، NET 6 سیستم تشخیص ابر بهتری را با Open Telemetry و Dotnet Monitor ارائه می دهد. این سرویس ها در مرحله تولید و کار با سرویس Azure App نیز در دسترس هستند و نگهداری می شوند.
  • رابط‌های برنامه‌نویسی JSON در نسخه بهبودیافته dot NET قابلیت‌های بهبود یافته‌ای دارند و عملکرد بالاتری را در حین کار با یک منبع مولد برای سریال‌ساز نشان می‌دهند.
  • برای ایجاد یک تغییر مثبت در خدمات HTTP مرتبط با دات نت، آخرین نسخه با حداقل API ارائه می شود که برای ساده کردن تجربه اولیه مفید است.
  • می توانید اجزای Blazor را با جاوا اسکریپت نمایش دهید و آنها را با برنامه های جاوا اسکریپت موجود ادغام کنید.
  • برای برنامه های BlazorWebAssembly (WASM)، دات نت 6 کامپایل WebAssembly AOT و پشتیبانی از خدمات زمان اجرا، از جمله سفارش مجدد وابستگی ها و وابستگی های سفارشی را فراهم می کند.
  • هر برنامه یک صفحه ای ایجاد شده با ASP.NET نسخه 6 مدل انعطاف پذیرتری دریافت کرده است. این برنامه ها اکنون می توانند با Angular، React و سایر فریم ورک های رابط محبوب ساخته شده بر روی جاوا اسکریپت استفاده شوند.
  • برای کمک به HTTPClient و gRPC در تعامل با سایر سرویس گیرندگان و سرورهای HTTP / 3، ویژگی های دات نت 6 HTTP / 3.
  • نسخه دات نت FileStream را از ابتدا بازنویسی کرده است که از پیوندهای نمادین در File IO و عملکرد بالاتر پشتیبانی می کند.
  • همچنین می توانید امنیت بهتری را در کنار آن مشاهده کنید بهبود عملکرد در NET 6. اینها شامل پشتیبانی بالاتر از OpenSSL 3، طرح رمزگذاری ChaCha20Poly1305 است. از نظر امنیت، برای نرم کردن عمق حفاظت در هنگام اجرا، به خصوص برای W ^ X و CET افزایش یافته است.
  • می توانید برنامه ها را با یک فایل (بدون استخراج) برای لینوکس، macOS و ویندوز منتشر کنید. در نسخه های قبلی این ویژگی فقط برای لینوکس در دسترس بود.
  • در میان دیگران بهبود یافته است ویژگی های دات نت 6، IL Trimming بهبود یافته و کارآمدتر شده است. این هشدارها و تحلیلگران جدیدی را ارائه می دهد که برای بهبود قابل توجه نتایج نهایی طراحی شده اند.
  • به روز رسانی جدید با ژنراتورها و تحلیلگرها ارائه می شود. آنها به طور ویژه طراحی و اضافه شده اند تا کد بهتر، ایمن تر و سازنده تر ایجاد کنند.
  • در نهایت، سازمان‌های بزرگی مانند Red Hat اکنون می‌توانند یک منبع دات‌نت بسازند و از مجموعه‌های مشابه برای کاربران خود استفاده کنند.

نتیجه

این خلاصه‌ای از نسخه کوتاه‌تر بهبودها، تغییرات، به‌روزرسانی‌ها و اصلاحات NET 6 است.همه این موارد اضافه شده برای بهبود فرآیند توسعه و تجربه بسیار مؤثر و مهم هستند. این به‌روزرسانی‌ها علاوه بر ارائه عملکرد بهتر، یک تجربه کلی توسعه مؤثر را از نظر سرعت، دقت و آزمایش تضمین می‌کنند. از موارد اضافه شده جدید استفاده کنید ویژگی های دات نت 6 و مراقب افزایش بهره وری و بهره وری توسعه باشید.

انتشار NET 6 Performance Enhancement Route اولین بار در مجله DEV IT ظاهر شد.