FULLSTACKDEVS Telegram 744
#Roslyn
#Performance

🔰 بررسی و معرفی یک نکته پرفورمنسی در شی شارپ

🔹 در نسخه 3.0 سی شارپ Anonymous type ها معرفی شدند.
که بهتون قابلیت نمونه سازی ابجکت های مختلف بدون مشخص کردن تایپ اونها رو میده.

▪️ به کمک این قابلیت و همچنین فیچری که در کامپایلر سی شارپ ( roslyn ) وجود داره می تونید آرایه هایی به شکل زیر تعریف کنید.

var arr = new[]
{
new { Id = 1 , Name = "Anonymous" },
new { Id = 2, Name = "BitBard" }
};


🔸 نکته ای که جالبه بدونید اینکه اگه ارایه بالا به شکل زیر تعریف بشه با کامپایلر ارور مواجه می شین.

var arr = new[]
{
new { Id = 1 , Name = "Anonymous" },
new { Name = "BitBard" , Id = 2, }
};


▪️ علت این موضوع برمیگرده به ویژگی type identity کامپایلر برای Anonymous Type ها.

🔹 به این صورت که کامپایلر در مواجه با نمونه سازی یک Anonymous Type در کد (object initializer)، ابتدا نام و نوع پراپرتی ها رو تشخیص میده ( به طور خیلی خلاصه ) و در نهایت برای اون Anonymous type، یک تایپ (class) با نامی که خودش انتخاب میکنه میسازه و از اون نمونه سازی میکنه.

🔸 از نظر کامپایلر Anonymous Type ها دارای یک identical structure هستند که برای تشخیص identical بودن ( یکسان بودن ) دو Anonymous Type باید نام و نوع پراپرتی ها و همچنین ترتیب تعریف شدن پراپرتی های اونها یکسان باشه.
🔸 حتی اگه دو Anonymous Type نام و نوع پراپرتی های اونها یکی باشه اما ترتیب تعریف کردن پراپرتی هاشون موقع نمونه سازی متفاوت باشه، کامپایلر برای هرکدوم از اونها تایپ های متفاوتی generate میکنه.

▪️ به همین خاطره که نمونه کد دوم تعریف آرایه با کامپایل ارور مواجه میشه، چون تمام عناصر ارایه باید از یک نوع باشن.

🔸 رعایت این نکته در نمونه سازی از Anonymous Type ها باعث افزایش پرفورمنس و کاهش مصرف حافظه میشه چون اگه توی یک assembly یک یا چندین Anonymous Type وجود داشته باشه که identical structure باشن، کامپایلر اونها رو از یک نوع تایپ در نظر میگیره و فقط یک تایپ براشون generate میکنه.
@fullStackDevs



tgoop.com/fullStackDevs/744
Create:
Last Update:

#Roslyn
#Performance

🔰 بررسی و معرفی یک نکته پرفورمنسی در شی شارپ

🔹 در نسخه 3.0 سی شارپ Anonymous type ها معرفی شدند.
که بهتون قابلیت نمونه سازی ابجکت های مختلف بدون مشخص کردن تایپ اونها رو میده.

▪️ به کمک این قابلیت و همچنین فیچری که در کامپایلر سی شارپ ( roslyn ) وجود داره می تونید آرایه هایی به شکل زیر تعریف کنید.

var arr = new[]
{
new { Id = 1 , Name = "Anonymous" },
new { Id = 2, Name = "BitBard" }
};


🔸 نکته ای که جالبه بدونید اینکه اگه ارایه بالا به شکل زیر تعریف بشه با کامپایلر ارور مواجه می شین.

var arr = new[]
{
new { Id = 1 , Name = "Anonymous" },
new { Name = "BitBard" , Id = 2, }
};


▪️ علت این موضوع برمیگرده به ویژگی type identity کامپایلر برای Anonymous Type ها.

🔹 به این صورت که کامپایلر در مواجه با نمونه سازی یک Anonymous Type در کد (object initializer)، ابتدا نام و نوع پراپرتی ها رو تشخیص میده ( به طور خیلی خلاصه ) و در نهایت برای اون Anonymous type، یک تایپ (class) با نامی که خودش انتخاب میکنه میسازه و از اون نمونه سازی میکنه.

🔸 از نظر کامپایلر Anonymous Type ها دارای یک identical structure هستند که برای تشخیص identical بودن ( یکسان بودن ) دو Anonymous Type باید نام و نوع پراپرتی ها و همچنین ترتیب تعریف شدن پراپرتی های اونها یکسان باشه.
🔸 حتی اگه دو Anonymous Type نام و نوع پراپرتی های اونها یکی باشه اما ترتیب تعریف کردن پراپرتی هاشون موقع نمونه سازی متفاوت باشه، کامپایلر برای هرکدوم از اونها تایپ های متفاوتی generate میکنه.

▪️ به همین خاطره که نمونه کد دوم تعریف آرایه با کامپایل ارور مواجه میشه، چون تمام عناصر ارایه باید از یک نوع باشن.

🔸 رعایت این نکته در نمونه سازی از Anonymous Type ها باعث افزایش پرفورمنس و کاهش مصرف حافظه میشه چون اگه توی یک assembly یک یا چندین Anonymous Type وجود داشته باشه که identical structure باشن، کامپایلر اونها رو از یک نوع تایپ در نظر میگیره و فقط یک تایپ براشون generate میکنه.
@fullStackDevs

BY Web Devs


Share with your friend now:
tgoop.com/fullStackDevs/744

View MORE
Open in Telegram


Telegram News

Date: |

You can invite up to 200 people from your contacts to join your channel as the next step. Select the users you want to add and click “Invite.” You can skip this step altogether. “Hey degen, are you stressed? Just let it all out,” he wrote, along with a link to join the group. Over 33,000 people sent out over 1,000 doxxing messages in the group. Although the administrators tried to delete all of the messages, the posting speed was far too much for them to keep up. Telegram Android app: Open the chats list, click the menu icon and select “New Channel.” During a meeting with the president of the Supreme Electoral Court (TSE) on June 6, Telegram's Vice President Ilya Perekopsky announced the initiatives. According to the executive, Brazil is the first country in the world where Telegram is introducing the features, which could be expanded to other countries facing threats to democracy through the dissemination of false content.
from us


Telegram Web Devs
FROM American