
آموزش بهبود پرفورمنس و کارایی برنامه های سی شارپ 10
آموزش بهبود پرفورمنس و کارایی برنامه های سی شارپ 10 یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی، آموزش بهبود کارایی برنامه های سی شارپ 10 است که با نام اصلی C# 10 Performance Playbook از شرکت Pluralsight منتشر شده است.
عملکرد و یا Performance در سی شارپ دات نت
در اکثر برنامه ها، مشکلات مربوط به عملکرد مشکلی ایجاد نمی کند. به عبارت دیگر، سناریوهای خاصی وجود دارند که در آنها شما باید نگران عملکرد باشید. این سناریوها شامل موارد زیر هستند:
در یک سرور با بار بالا: بسیاری از request ها را با فرکانس بالا پردازش کردن: برای مثال چیزی شبیه به موتور جستجوی گوگل، که در آنها عملکرد بیشترین اهمیت را دارد. چند بهینه سازی می تواند به طور قابل توجهی زمان پاسخ و یا response time را کاهش دهد یا ده ها هزار دلار در منابع ابری و cloud resource صرفه جویی کند. در چنین سرورهایی، باید به طور فعالانه و پیش قدمانه عملکرد را به طور مرتب آزمایش کنید.
در الگوریتم ها: بهینهسازی عملکرد یک الگوریتم با زمان اجرای طولانی میتواند باعث صرفهجویی در زمان کاربر شود، یا امکان تحمل بار بسیار بالاتر را فراهم کند.

در یک کتابخانه یا یک افزونه: هنگامی که یک کتابخانه یا یک افزونه توسعه را می دهید، آن کتابخانه یا افزونه به طور بالقوه در یک سرور با بار بالا یا برنامه های حساس به عملکرد و یا performance-sensitive استفاده خواهد شد. علاوه بر این، کتابخانه یا افزونه شما با سایر کتابخانه ها و یک برنامه های دیگر در یک فرآیند و یا process یکسان قرار خواهد گرفت. کد شما ممکن است در مسیرهای داغ و یا hot path ها فراخوانی شود یا ممکن است از منابع زیادی استفاده کند که به عملکرد کلی فرآیند و یا process لطمه می زند. به همین دلیل، بهتر است برای بدترین سناریو در توسعه کتابخانه و افزونه برنامه ریزی کنید.

همه چیز را اندازه گیری کنید: وقتی با عملکرد سروکار دارید، همه چیز را اندازه گیری کنید. فاکتورهای زیادی در برنامه های دات نت وجود دارند که بایستی اندازه گیری شوند. سوالاتی از قبیل اینکه چه زمانی اندازهگیری کنیم، چه چیزی را اندازهگیری کنیم، و چگونه اندازهگیری کنیم نیز مطرح هستند.
از performance profiler استفاده کنید: هنگامی که صحبت از عملکرد به میان می آید، یک performance profiler بسیار مفید خواهد بود. می توانید از یک performance profiler برای شناسایی مشکلات عملکرد و مشخص کردن علت های خاص آن استفاده کنید. یک performance profiler به شما امکان می دهد بخشی از زمان اجرای برنامه خود را ضبط کنید، آن را به عنوان یک snapshot ذخیره کنید و آن را بررسی کنید.
به فشار GC توجه کنید: فرآیند garbage collection و یا GC بسیار با عملکرد مرتبط است. به جرات می توان گفت که مهم ترین چیزی که در یک فرآیند دات نت از نظر عملکرد باید فهمید GC است. در حالی که تخصیص ها و یا allocation بسیار ارزان هستند، فرآیند GC گران است و ما باید دائماً مراقب آن باشیم. به طور خاص، ما باید به دو معیار نگاه کنیم: درصد زمان صرف شده در فرآیند garbage collection و فرکانس جمع آوری GC در نسل دوم آن و یا همان Gen 2.
به JITter توجه کنید: کدهای دات نت به جای کامپایل شدن به کد بومی و یا native code به کد MSIL کامپایل می شوند. این همان ترفندی است که توسط Java JVM نیز مورد استفاده قرار می گیرد که به برنامه های جاوا اجازه می دهد در همه جا اجرا شود. این روال با با کامپایل به موقع و یا just-in-time compilation که به بیان کوتاه به آن JIT می گویند اتفاق می افتد. اولین باری که یک متد فراخوانی می شود، کامپایلر JIT و کد MSIL را به کد بومی تبدیل می کند. این روال بسیار سریع است، اما همچنان می تواند باعث مشکلات عملکرد، به خصوص در هنگام راه اندازی و یا startup شود. معمولاً عملکرد JIT مشکلی ایجاد نمی کند و نیازی به بهینه سازی چیزی وجود ندارد. اما، در برخی موارد، ممکن است بخواهید JITter را با تغییرات کوچکی تنظیم کنید.
روش های شناسایی گلوگاه های عملکرد در برنامه های C#
برای بهبود عملکرد یک برنامه C#، ابتدا باید مشخص شود کدام بخش از کد بیشترین هزینه اجرایی را ایجاد می کند. کندی یک برنامه ممکن است به دلایل مختلفی مانند پردازش های غیرضروری، استفاده نامناسب از حافظه یا طراحی نامناسب بخش های مختلف سیستم رخ دهد. بررسی عملکرد برنامه به توسعه دهندگان کمک می کند به جای تغییرهای حدسی، روی قسمت هایی تمرکز کنند که واقعاً بر سرعت اجرا یا مصرف منابع تأثیر می گذارند.
اندازه گیری و تحلیل Performance بخش مهمی از فرایند بهینه سازی است. در بسیاری از موارد، کدی که در نگاه اول پیچیده به نظر می رسد لزوماً کند نیست و یک بخش ظاهراً ساده ممکن است در شرایط خاص به گلوگاه تبدیل شود. به همین دلیل، تصمیم گیری بر اساس رفتار واقعی برنامه اهمیت دارد. در این آموزش با بررسی عملکرد و تحلیل بخش های مختلف کد آشنا می شوید تا بتوانید مشکلات احتمالی را بهتر شناسایی کنید و تغییرات هدفمندتری برای بهبود کارایی انجام دهید.
بهینه سازی کدهای C# برای کاهش مصرف منابع
بهینه سازی کدهای C# می تواند شامل بازنگری در الگوریتم ها، نحوه استفاده از مجموعه ها، عملیات پردازشی و مدیریت حافظه باشد. هدف این نیست که همه خطوط کد کوتاه تر شوند، بلکه باید مشخص شود کدام تغییر واقعاً باعث کاهش هزینه اجرایی می شود. گاهی انتخاب یک الگوریتم مناسب تأثیر بیشتری از تغییرهای کوچک در ساختار کد دارد. بررسی دقیق کد و مقایسه رفتار آن پیش و پس از تغییر، به انتخاب راهکارهای مؤثرتر کمک می کند.
در پروژه های بزرگ، بهینه سازی خط به خط می تواند به شناسایی عملیات غیرضروری و الگوهای ناکارآمد کمک کند. با این حال، تغییرهای مربوط به Performance باید با حفظ صحت رفتار برنامه انجام شوند و خوانایی و قابلیت نگهداری کد نیز در نظر گرفته شود. این آموزش با تمرکز بر بررسی و بهینه سازی کدهای C# به شما کمک می کند رابطه میان ساختار پیاده سازی و هزینه اجرای برنامه را بهتر بشناسید و برای اصلاح بخش های مشکل دار تصمیم های فنی آگاهانه تری بگیرید.
نقش معماری نرم افزار در افزایش Performance برنامه های دات نت
عملکرد یک برنامه تنها به جزئیات کدهای آن وابسته نیست و معماری نرم افزار نیز می تواند بر سرعت اجرا و مصرف منابع تأثیر بگذارد. نحوه تقسیم مسئولیت ها، ارتباط میان اجزای سیستم و انتخاب محل انجام پردازش ها ممکن است هزینه های اجرایی متفاوتی ایجاد کند. معماری مناسب کمک می کند رفتار برنامه قابل درک تر باشد و شناسایی بخش هایی که نیاز به بهینه سازی دارند، ساده تر انجام شود. به همین دلیل، بهبود Performance باید در سطح کد و طراحی سیستم بررسی شود.
در معماری برنامه های دات نت، انتخاب راهکار مناسب باید با توجه به نیازهای واقعی سیستم و شرایط اجرای آن انجام شود. افزودن پیچیدگی غیرضروری یا استفاده از الگوهای نامتناسب لزوماً عملکرد را بهتر نمی کند. در این دوره، موضوع معماری صحیح در کنار تحلیل و بهینه سازی کد بررسی می شود تا بتوانید تأثیر تصمیم های طراحی را بر کارایی برنامه بهتر ارزیابی کنید. این دیدگاه برای توسعه دهندگانی مفید است که می خواهند فراتر از اصلاحات جزئی کد، به بهبود عملکرد سیستم به شکل جامع تری فکر کنند.
این آموزش بهینه سازی C# برای چه کسانی مناسب است؟
این دوره با سطح پیشرفته برای توسعه دهندگانی مناسب است که تجربه کار با C# و ساخت برنامه های دات نت را دارند و می خواهند دانش خود را در زمینه تحلیل و بهبود عملکرد گسترش دهند. اگر با برنامه هایی روبه رو هستید که در شرایط خاص کند می شوند یا منابع بیشتری از حد انتظار مصرف می کنند، یادگیری روش های اصولی بررسی Performance می تواند به شما کمک کند علت مشکلات را دقیق تر بررسی کنید و راهکارهای مناسب تری انتخاب نمایید.
توسعه دهندگانی که مسئول نگهداری یا بهبود نرم افزارهای موجود هستند نیز می توانند از شناخت ارتباط میان جزئیات پیاده سازی و معماری نرم افزار بهره ببرند. در این آموزش، تحلیل عملکرد، بهینه سازی کد و بررسی نقش معماری در افزایش سرعت در کنار یکدیگر قرار می گیرند. این موضوعات به شما کمک می کنند هنگام تصمیم گیری درباره تغییر کد یا ساختار برنامه، به جای تکیه بر حدس و تجربه شخصی صرف، از ارزیابی فنی و مشاهده رفتار واقعی نرم افزار استفاده کنید.
سرفصل مطالب آموزش ویدئویی بهبود پرفورمنس و کارایی برنامه های سی شارپ 10
فصل اول: مقدمه دوره آموزشی
- مقدمه دوره آموزشی
فصل دوم: بررسی کردن عملکرد کارایی و یا Performance
- مقدمه
- بهینه سازی کردن برای برنامه نویسان
- بررسی Premature Optimization و یا بهینه سازی زودرس و مبحث Goldplating
- معرفی کردن BenchmarkDotNet
- آموزش عملی: استفاده کردن از BenchmarkDotNet
- جمع بندی
فصل سوم: بهینه سازی کردن کدهای سی شارپ به صورت خط ب خط - قسمت اول
- مقدمه
- آموزش عملی: ایجاد کردن String ها به صورت کارامد
- آموزش عملی: تجزیه کردن String ها
- آموزش عملی: مقایسه کردن رشته ها
- آموزش عملی: کار کردن با حلقه های تکرار For و Foreach
- آموزش عملی: کار کردن با کلاس ها و Struct ها و Record ها
فصل چهارم: بهینه سازی کردن کدهای سی شارپ به صورت خط ب خط - قسمت دوم
- آموزش عملی: انتساب مستقیم و یا Direct Assignment
- آموزش عملی: مجوز ها و یا Permission ها و Exception ها
- آموزش عملی: کار کردن با Unit Test های مربوط به Performance
- آموزش عملی: انتخاب کردن Data Type های مناسب
- آموزش عملی: نوع داده ای Date
- جمع بندی
فصل پنجم: بررسی عملکرد برنامه برای بهبود Performance
- مقدمه
- بررسی کد Intermediate Language
- آموزش عملی: کار کردن با IL
- بررسی دیتابیس ها و Indexing
- آموزش عملی: کار با کوئری ها در SQL Server
- آموزش عملی: ابزارهای پروفایل
- کار کردن با LINQ
- تفاوت Debug و Release
- جمع بندی
فصل ششم: ایجاد معماری صحیح برای افزایش سرعت
- مقدمه
- مبحث Time-shifting
- بررسی Planetary Scale Architecture
- جمع بندی دوره آموزشی







