ΠΠ΅ΡƒΡΠΏΠ΅ΡˆΠ½Π° статия Π·Π° ускоряванС Π½Π° Ρ€Π°Π·ΠΌΠΈΡΡŠΠ»

Π’Π΅Π΄Π½Π°Π³Π° обяснявам Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° статията. ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΈΡΡ‚ ΠΏΠ»Π°Π½ бСшС Π΄Π° сС Π΄Π°Π΄Π΅ Π΄ΠΎΠ±ΡŠΡ€, Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ ΡΡŠΠ²Π΅Ρ‚ Π·Π° ускоряванС Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠ°Ρ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° прост, Π½ΠΎ рСалистичСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½ΠΎ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° сравнитСлния Π°Π½Π°Π»ΠΈΠ· сС ΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π±Π°Π²Π½ΠΎ, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ си мислСх, LINQ Π΅ ΠΏΠΎ-Π±Π°Π²Π΅Π½, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π² ΠΊΠΎΡˆΠΌΠ°Ρ€ΠΈΡ‚Π΅ ΠΌΠΈ. Но Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка сС ΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ ΠΈ Π°Π· съм ΡΠ³Ρ€Π΅ΡˆΠΈΠ» Π² ΠΌΠ΅Ρ€ΠΊΠΈΡ‚Π΅... ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Π·Π° Ρ‚Π°Π·ΠΈ ТитСйска история ΠΈΠΌΠ° ΠΏΠΎΠ΄ ΠΈΠ·Ρ€Π΅Π·ΠΊΠ°Ρ‚Π° ΠΈ Π² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΡ‚Π΅. Въй ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΡŠΡ‚ Π΅ доста ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΠΈ сС ΠΏΡ€ΠΈΠ»Π°Π³Π° ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΠΏΡ€Π°Π²ΠΈ Π² Π΅Π΄Π½ΠΎ прСдприятиС, сС ΠΎΠΊΠ°Π·Π° доста интСрСсна, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΌΠΈ сС струва, дСмонстрация Π½Π° ΠΆΠΈΠ²ΠΎΡ‚Π°: Π²ΡŠΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π²ΡŠΡ€Ρ…Ρƒ скоростта Π½Π° основния ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ Π½Π° статията бСшС Π½Π΅ сС забСлязва ΠΏΠΎΡ€Π°Π΄ΠΈ външна Π»ΠΎΠ³ΠΈΠΊΠ°: Moq, Autofac, EF Core ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ "Ρ€Π΅ΠΌΡŠΡ†ΠΈ".

Π—Π°ΠΏΠΎΡ‡Π½Π°Ρ… Π΄Π° работя ΠΏΠΎΠ΄ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚ Ρ‚Π°Π·ΠΈ статия: Π—Π°Ρ‰ΠΎ Reflection Π΅ Π±Π°Π²Π΅Π½

ΠšΠ°ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡ‚Π΅, Π°Π²Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΈ вмСсто Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ ΠΎΡ‚ Ρ‚ΠΈΠΏ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚ΠΎ чудСсСн Π½Π°Ρ‡ΠΈΠ½ Π·Π° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ускоряванС Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π Π°Π·Π±ΠΈΡ€Π° сС, ΠΈΠΌΠ° IL Смисия, Π½ΠΎ Π±ΠΈΡ… искал Π΄Π° я ΠΈΠ·Π±Π΅Π³Π½Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π½Π°ΠΉ-трудоСмкият Π½Π°Ρ‡ΠΈΠ½ Π·Π° изпълнСниС Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°, която Π΅ изпълнСна с Π³Ρ€Π΅ΡˆΠΊΠΈ.

ΠšΠ°Ρ‚ΠΎ сС ΠΈΠΌΠ° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄, Ρ‡Π΅ Π²ΠΈΠ½Π°Π³ΠΈ съм Π±ΠΈΠ» Π½Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅ Π·Π° скоростта Π½Π° Ρ€Π°Π·ΠΌΠΈΡΡŠΠ», нямах особСно Π½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π΄Π° поставям ΠΏΠΎΠ΄ Π²ΡŠΠΏΡ€ΠΎΡ ΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° Π°Π²Ρ‚ΠΎΡ€Π°.

ЧСсто срСщам Π½Π°ΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² прСдприятиСто. Π’ΠΈΠΏΡŠΡ‚ Π΅ Π²Π·Π΅Ρ‚. Π’Π·Π΅Ρ‚Π° Π΅ информация Π·Π° ΠΈΠΌΠΎΡ‚Π°. Извиква сС ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ SetValue ΠΈ всички ΠΌΡƒ сС Ρ€Π°Π΄Π²Π°Ρ‚. Бтойността Π΅ пристигнала Π² Ρ†Π΅Π»Π΅Π²ΠΎΡ‚ΠΎ ΠΏΠΎΠ»Π΅, всички са Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ. Много ΡƒΠΌΠ½ΠΈ Ρ…ΠΎΡ€Π° - Π²ΡŠΠ·Ρ€Π°ΡΡ‚Π½ΠΈ Ρ…ΠΎΡ€Π° ΠΈ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ Π½Π° Π΅ΠΊΠΈΠΏΠΈ - ΠΏΠΈΡˆΠ°Ρ‚ своитС Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ към ΠΎΠ±Π΅ΠΊΡ‚, Π±Π°Π·ΠΈΡ€Π°ΠΉΠΊΠΈ сС Π½Π° Ρ‚Π°ΠΊΠ°Π²Π° Π½Π°ΠΈΠ²Π½Π° рСализация β€žΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»Π½ΠΈβ€œ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ Ρ‚ΠΈΠΏ Π² Π΄Ρ€ΡƒΠ³. Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Π΅ слСдната: Π²Π·Π΅ΠΌΠ°ΠΌΠ΅ всички ΠΏΠΎΠ»Π΅Ρ‚Π°, Π²Π·Π΅ΠΌΠ°ΠΌΠ΅ всички свойства, ΠΈΡ‚Π΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ Π³ΠΈ: Π°ΠΊΠΎ ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° Ρ‡Π»Π΅Π½ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Ρ‚ΠΈΠΏΠ° ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‚, изпълнявамС SetValue. ΠžΡ‚ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅ улавямС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΠΎΡ€Π°Π΄ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ смС Π½Π°ΠΌΠ΅Ρ€ΠΈΠ»ΠΈ някакво свойство Π² Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅, Π½ΠΎ Π΄ΠΎΡ€ΠΈ ΠΈ Ρ‚ΡƒΠΊ ΠΈΠΌΠ° ΠΈΠ·Ρ…ΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ подобрява производитСлността. ΠžΠΏΠΈΡ‚Π°ΠΉ Π΄Π° Ρ…Π²Π°Π½Π΅Ρˆ.

Π’ΠΈΠΆΠ΄Π°Π» съм Ρ…ΠΎΡ€Π° Π΄Π° ΠΏΡ€Π΅ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Ρ‚ парсСри ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ, Π±Π΅Π· Π΄Π° са напълно Π²ΡŠΠΎΡ€ΡŠΠΆΠ΅Π½ΠΈ с информация Π·Π° Ρ‚ΠΎΠ²Π° ΠΊΠ°ΠΊ работят ΠΌΠ°ΡˆΠΈΠ½ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ са дошли ΠΏΡ€Π΅Π΄ΠΈ тях. Π’ΠΈΠΆΠ΄Π°Π» съм Ρ…ΠΎΡ€Π° Π΄Π° крият своитС Π½Π°ΠΈΠ²Π½ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π·Π°Π΄ стратСгии, Π·Π°Π΄ интСрфСйси, Π·Π°Π΄ ΠΈΠ½ΠΆΠ΅ΠΊΡ†ΠΈΠΈ, сякаш Ρ‚ΠΎΠ²Π° Π±ΠΈ ΠΈΠ·Π²ΠΈΠ½ΠΈΠ»ΠΎ послСдвалата вакханалия. Π’ΠΈΡ€Π½Π°Ρ… си носа ΠΏΡ€ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ осъзнавания. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π½Π΅ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ… Ρ€Π΅Π°Π»Π½ΠΎΡ‚ΠΎ ΠΈΠ·Ρ‚ΠΈΡ‡Π°Π½Π΅ Π½Π° производитСлност ΠΈ, Π°ΠΊΠΎ бСшС възмоТно, просто ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ… ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠΎ-β€žΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½ΠΎβ€œ, Π°ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ… Π΄Π° сС Π΄ΠΎΠΊΠΎΠΏΠ°ΠΌ Π΄ΠΎ Π½Π΅Π³ΠΎ. Π•Ρ‚ΠΎ Π·Π°Ρ‰ΠΎ, ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ измСрвания, Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ, ΠΌΠ΅ ΠΎΠ±ΡŠΡ€ΠΊΠ°Ρ…Π° сСриозно.

Мисля, Ρ‡Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ вас, Ρ‡Π΅Ρ‚Π΅ΠΉΠΊΠΈ Π ΠΈΡ…Ρ‚Π΅Ρ€ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ·ΠΈ, са сС Π½Π°Ρ‚ΡŠΠΊΠ½Π°Π»ΠΈ Π½Π° напълно справСдливо Ρ‚Π²ΡŠΡ€Π΄Π΅Π½ΠΈΠ΅, Ρ‡Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π² ΠΊΠΎΠ΄Π° Π΅ явлСниС, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠΌΠ° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎ влияниС Π²ΡŠΡ€Ρ…Ρƒ производитСлността Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Π˜Π·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½ΡƒΠΆΠ΄Π°Π²Π° CLR Π΄Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π΅ ΠΏΡ€Π΅Π· асСмбли, Π·Π° Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈ Ρ‚Π°Π·ΠΈ, ΠΎΡ‚ която сС Π½ΡƒΠΆΠ΄Π°Π΅, Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΈΠΌ, Π΄Π° Π³ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π° ΠΈ Ρ‚.Π½. Π’ допълнСниС, ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ Π½Π° послСдоватСлности Π²ΠΎΠ΄ΠΈ Π΄ΠΎ разпрСдСлянС Π½Π° голямо количСство ΠΏΠ°ΠΌΠ΅Ρ‚. ИзползвамС ΠΏΠ°ΠΌΠ΅Ρ‚, CLR Ρ€Π°Π·ΠΊΡ€ΠΈΠ²Π° GC ΠΈ Ρ„Ρ€ΠΈΠ·ΠΎΠ²Π΅Ρ‚Π΅ Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚. Врябва Π΄Π° Π΅ Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΎ Π±Π°Π²Π½ΠΎ, повярвайтС ΠΌΠΈ. ΠžΠ³Ρ€ΠΎΠΌΠ½ΠΈΡ‚Π΅ количСства ΠΏΠ°ΠΌΠ΅Ρ‚ Π½Π° ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈ производствСни ΡΡŠΡ€Π²ΡŠΡ€ΠΈ ΠΈΠ»ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½ΠΈ машини Π½Π΅ прСдотвратяват Π³ΠΎΠ»Π΅ΠΌΠΈ забавяния Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΏΠ°ΠΌΠ΅Ρ‚, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-вСроятно Π΅ Π΄Π° Π—ΠΠ‘Π•Π›Π•Π–Π˜Π’Π• ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ GC. ΠžΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° тСория Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π΅Π½ Ρ‡Π΅Ρ€Π²Π΅Π½ ΠΏΠ°Ρ€Ρ†Π°Π» Π·Π° Π½Π΅Π³ΠΎ.

Всички Π½ΠΈΠ΅ ΠΎΠ±Π°Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ IoC ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈ Π·Π° Π΄Π°Ρ‚Π°, Ρ‡ΠΈΠΉΡ‚ΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° ΡΡŠΡ‰ΠΎ сС основава Π½Π° ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ няма Π²ΡŠΠΏΡ€ΠΎΡΠΈ относно тяхната производитСлност. НС, Π½Π΅ Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° зависимости ΠΈ абстракция ΠΎΡ‚ външни ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ контСкстни ΠΌΠΎΠ΄Π΅Π»ΠΈ са Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ, Ρ‡Π΅ трябва Π΄Π° ΠΏΠΎΠΆΠ΅Ρ€Ρ‚Π²Π°ΠΌΠ΅ производитСлността във всСки случай. Всичко Π΅ ΠΏΠΎ-просто - наистина Π½Π΅ влияС ΠΌΠ½ΠΎΠ³ΠΎ Π½Π° производитСлността.

Π€Π°ΠΊΡ‚ Π΅, Ρ‡Π΅ Π½Π°ΠΉ-чСсто срСщанитС Ρ€Π°ΠΌΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ сС основават Π½Π° тСхнологията Π·Π° ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ всякакви Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅, Π·Π° Π΄Π° работят с нСя ΠΏΠΎ-ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π½ΠΎ. ОбикновСно Ρ‚ΠΎΠ²Π° Π΅ кСш. ОбикновСно Ρ‚ΠΎΠ²Π° са ΠΈΠ·Ρ€Π°Π·ΠΈ ΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΈ, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ Π΄ΡŠΡ€Π²ΠΎΡ‚ΠΎ Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅. Π‘ΡŠΡ‰ΠΈΡΡ‚ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π΅Π½ ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π΅Π½ Ρ€Π΅Ρ‡Π½ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠΏΠΎΡΡ‚Π°Π²Ρ Ρ‚ΠΈΠΏΠΎΠ²Π΅ с Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Ρ‚ Π΅Π΄ΠΈΠ½ Π² Π΄Ρ€ΡƒΠ³, Π±Π΅Π· Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Как сС постига Ρ‚ΠΎΠ²Π°? По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ Ρ‚ΠΎΠ²Π° Π½Π΅ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π° ΠΎΡ‚ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π°, която самата ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° JIT ΠΊΠΎΠ΄. ΠšΠΎΠ³Π°Ρ‚ΠΎ Π΄Π°Π΄Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π·Π° ΠΏΡŠΡ€Π²ΠΈ ΠΏΡŠΡ‚, Ρ‚ΠΎΠΉ сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° (ΠΈ, Π΄Π°, Ρ‚ΠΎΠ·ΠΈ процСс Π½Π΅ Π΅ Π±ΡŠΡ€Π·); ΠΏΡ€ΠΈ слСдващи извиквания ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŠΡ‚ сС ΠΏΡ€Π΅Ρ…Π²ΡŠΡ€Π»Ρ към Π²Π΅Ρ‡Π΅ компилирания ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈ няма Π΄Π° ΠΈΠΌΠ° Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ намалСния Π½Π° производитСлността.

Π’ нашия случай ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ JIT компилация ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ със ΡΡŠΡ‰Π°Ρ‚Π° производитСлност ΠΊΠ°Ρ‚ΠΎ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ AOT Π΄Π²ΠΎΠΉΠ½ΠΈΡ†ΠΈ. Π’ Ρ‚ΠΎΠ·ΠΈ случай Π½Π° ΠΏΠΎΠΌΠΎΡ‰ Ρ‰Π΅ Π½ΠΈ Π΄ΠΎΠΉΠ΄Π°Ρ‚ ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅.

Π’ΡŠΠΏΡ€ΠΎΡΠ½ΠΈΡΡ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π° Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΏΠΎ слСдния Π½Π°Ρ‡ΠΈΠ½:
Врябва Π΄Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‚Π΅ крайния Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΎΡ‚ отразяванСто ΠΊΠ°Ρ‚ΠΎ Π΄Π΅Π»Π΅Π³Π°Ρ‚, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π°Ρ‚Π° функция. Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° ΠΈΠΌΠ° смисъл Π΄Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Ρ‚Π΅ всички Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ с информация Π·Π° Ρ‚ΠΈΠΏΠ° Π² ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° Π½Π° вашия Ρ‚ΠΈΠΏ, Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠ°, ΠΊΠΎΠΈΡ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ извън ΠΎΠ±Π΅ΠΊΡ‚ΠΈΡ‚Π΅.

Π’ Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ° Π»ΠΎΠ³ΠΈΠΊΠ°. Здравият Ρ€Π°Π·ΡƒΠΌ Π½ΠΈ ΠΊΠ°Π·Π²Π°, Ρ‡Π΅ Π°ΠΊΠΎ Π½Π΅Ρ‰ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° ΠΈ ΠΊΠ΅ΡˆΠΈΡ€Π°, Ρ‚ΠΎ трябва Π΄Π° сС Π½Π°ΠΏΡ€Π°Π²ΠΈ.

Π“Π»Π΅Π΄Π°ΠΉΠΊΠΈ Π½Π°ΠΏΡ€Π΅Π΄, трябва Π΄Π° сС ΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ ΠΊΠ΅ΡˆΡŠΡ‚ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ° своитС прСдимства, Π΄ΠΎΡ€ΠΈ Π°ΠΊΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ прСдлоТСния ΠΌΠ΅Ρ‚ΠΎΠ΄ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈ. Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Ρ‚ΡƒΠΊ просто повтарям Ρ‚Π΅Π·ΠΈΡ‚Π΅ Π½Π° Π°Π²Ρ‚ΠΎΡ€Π° Π½Π° статията, Π½Π° която сС ΠΏΠΎΠ·ΠΎΠ²Π°Π²Π°ΠΌ ΠΏΠΎ-Π³ΠΎΡ€Π΅.

Π‘Π΅Π³Π° Π·Π° ΠΊΠΎΠ΄Π°. НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΉΡ‚ΠΎ сС основава Π½Π° моята ΡΠΊΠΎΡ€ΠΎΡˆΠ½Π° Π±ΠΎΠ»ΠΊΠ°, с която Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° сС сблъскам Π² сСриозна продукция Π½Π° сСриозна ΠΊΡ€Π΅Π΄ΠΈΡ‚Π½Π° институция. Всички ΠΎΠ±Π΅ΠΊΡ‚ΠΈ са Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½ΠΈ, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π½ΠΈΠΊΠΎΠΉ Π΄Π° Π½Π΅ сС досСща.

Има някаква ΡΡŠΡ‰Π½ΠΎΡΡ‚. НСка ΠΈΠΌΠ° ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚. Има Π±ΡƒΠΊΠ²ΠΈ със стандартизирано тяло, ΠΎΡ‚ ΠΊΠΎΠ΅Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΈ Ρ…ΠΈΠ΄Ρ€Π°Ρ‚Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ ΡΡŠΡ‰ΠΈΡ‚Π΅ Ρ‚Π΅Π·ΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΈ. ΠŸΡ€ΠΈΡΡ‚ΠΈΠ³Π½Π° писмо, ΠΏΡ€ΠΎΡ‡Π΅Ρ‚ΠΎΡ…ΠΌΠ΅ Π³ΠΎ, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Ρ…ΠΌΠ΅ Π³ΠΎ Π½Π° Π΄Π²ΠΎΠΉΠΊΠΈ ΠΊΠ»ΡŽΡ‡-стойност, ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ ΠΈ Π³ΠΎ записахмС Π² Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ.

Π•Π»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ€Π½ΠΎ Π΅. Π”Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ΠΌ, Ρ‡Π΅ Π΄Π°Π΄Π΅Π½ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ ΠΈΠΌΠ° свойствата Пълно ΠΈΠΌΠ΅, Π’ΡŠΠ·Ρ€Π°ΡΡ‚ ΠΈ Π’Π΅Π»Π΅Ρ„ΠΎΠ½ Π·Π° Π²Ρ€ΡŠΠ·ΠΊΠ°. Π’Π΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Π² писмото. Π‘ΠΈΠ·Π½Π΅ΡΡŠΡ‚ ΡΡŠΡ‰ΠΎ иска ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π±ΡŠΡ€Π·ΠΎ Π΄Π° добавя Π½ΠΎΠ²ΠΈ ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ Π·Π° ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π°Π½Π΅ Π½Π° свойствата Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π° Π² Π΄Π²ΠΎΠΉΠΊΠΈ Π² тялото Π½Π° писмото. Π’ случай, Ρ‡Π΅ някой Π½Π°ΠΏΡ€Π°Π²ΠΈ ΠΏΠ΅Ρ‡Π°Ρ‚Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² шаблона ΠΈΠ»ΠΈ Π°ΠΊΠΎ ΠΏΡ€Π΅Π΄ΠΈ пусканСто Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ спСшно Π΄Π° стартиратС ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π°Π½Π΅ ΠΎΡ‚ Π½ΠΎΠ² ΠΏΠ°Ρ€Ρ‚Π½ΡŒΠΎΡ€, ΠΊΠ°Ρ‚ΠΎ сС Π°Π΄Π°ΠΏΡ‚ΠΈΡ€Π°Ρ‚Π΅ към новия Ρ„ΠΎΡ€ΠΌΠ°Ρ‚. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²Π° корСлация Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π°Π½Π΅ ΠΊΠ°Ρ‚ΠΎ Π΅Π²Ρ‚ΠΈΠ½Π° корСкция Π½Π° Π΄Π°Π½Π½ΠΈ. ВоСст ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ ΠΆΠΈΠ²ΠΎΡ‚Π°.

ВнСдрявамС, създавамС тСстовС. Π’ΡŠΡ€ΡˆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°.

Няма Π΄Π° прСдоставя ΠΊΠΎΠ΄Π°: ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ ΠΈ Ρ‚Π΅ са Π΄ΠΎΡΡ‚ΡŠΠΏΠ½ΠΈ Π² GitHub Ρ‡Ρ€Π΅Π· Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π² края Π½Π° статията. МоТСш Π΄Π° Π³ΠΈ Ρ‚ΠΎΠ²Π°Ρ€ΠΈΡˆ, ΠΈΠ·ΠΌΡŠΡ‡Π²Π°Ρˆ Π΄ΠΎ нСузнаваСмост ΠΈ Π΄Π° Π³ΠΈ ΠΌΠ΅Ρ€ΠΈΡˆ, ΠΊΠ°ΠΊΡ‚ΠΎ Π±ΠΈ сС ΠΎΡ‚Ρ€Π°Π·ΠΈΠ»ΠΎ Π² твоя случай. Π©Π΅ Π΄Π°ΠΌ само ΠΊΠΎΠ΄Π° Π½Π° Π΄Π²Π° шаблонни ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΠΈΡ‚ΠΎ Ρ€Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π°Ρ‚ Ρ…ΠΈΠ΄Ρ€Π°Ρ‚Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° бъдС Π±ΡŠΡ€Π·, ΠΎΡ‚ Ρ…ΠΈΠ΄Ρ€Π°Ρ‚Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° бъдС Π±Π°Π²Π΅Π½.

Π›ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π΅ слСдната: ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ Π½Π° шаблона ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Π΄Π²ΠΎΠΉΠΊΠΈ, Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ основната Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. Блоят LINQ Π΅ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΡŠΡ‚ ΠΈ основната Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° Ρ…ΠΈΠ΄Ρ€Π°Ρ‚Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ заявка към контСкста Π½Π° Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΈ сравнява ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ с Π΄Π²ΠΎΠΉΠΊΠΈ ΠΎΡ‚ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° (Π·Π° Ρ‚Π΅Π·ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ° ΠΊΠΎΠ΄ Π±Π΅Π· LINQ Π·Π° сравнСниС). Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π΄Π²ΠΎΠΉΠΊΠΈΡ‚Π΅ сС ΠΏΡ€Π΅Π΄Π°Π²Π°Ρ‚ Π½Π° основния ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° хидратация ΠΈ стойноститС Π½Π° Π΄Π²ΠΎΠΉΠΊΠΈΡ‚Π΅ сС Π·Π°Π΄Π°Π²Π°Ρ‚ Π½Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΈΡ‚Π΅ свойства Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π°.

β€žΠ‘ΡŠΡ€Π·β€œ (ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ Π‘ΡŠΡ€Π· Π² Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ²Π΅):

 protected override Contact GetContact(PropertyToValueCorrelation[] correlations)
        {
            var contact = new Contact();
            foreach (var setterMapItem in _proprtySettersMap)
            {
                var correlation = correlations.FirstOrDefault(x => x.PropertyName == setterMapItem.Key);
                setterMapItem.Value(contact, correlation?.Value);
            }
            return contact;
        }

ΠšΠ°ΠΊΡ‚ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС статична колСкция със свойства Π½Π° сСтСр - ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ Π»Π°ΠΌΠ±Π΄Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ ΠΎΠ±Π΅ΠΊΡ‚Π° Π½Π° сСтСр. БъздадСн ΠΎΡ‚ слСдния ΠΊΠΎΠ΄:

        static FastContactHydrator()
        {
            var type = typeof(Contact);
            foreach (var property in type.GetProperties())
            {
                _proprtySettersMap[property.Name] = GetSetterAction(property);
            }
        }

        private static Action<Contact, string> GetSetterAction(PropertyInfo property)
        {
            var setterInfo = property.GetSetMethod();
            var paramValueOriginal = Expression.Parameter(property.PropertyType, "value");
            var paramEntity = Expression.Parameter(typeof(Contact), "entity");
            var setterExp = Expression.Call(paramEntity, setterInfo, paramValueOriginal).Reduce();
            
            var lambda = (Expression<Action<Contact, string>>)Expression.Lambda(setterExp, paramEntity, paramValueOriginal);

            return lambda.Compile();
        }

Π’ ΠΎΠ±Ρ‰ΠΈ Π»ΠΈΠ½ΠΈΠΈ Π΅ ясно. ΠŸΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΏΡ€Π΅Π· свойствата, създавамС Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΈ Π·Π° тях, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ‚ сСтСри, ΠΈ Π³ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅. Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° сС ΠΎΠ±Π°ΠΆΠ΄Π°ΠΌΠ΅, ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ.

β€žΠ‘Π°Π²Π½ΠΎβ€œ (ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ Π‘Π°Π²Π΅Π½ Π² Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ²Π΅):

        protected override Contact GetContact(PropertyToValueCorrelation[] correlations)
        {
            var contact = new Contact();
            foreach (var property in _properties)
            {
                var correlation = correlations.FirstOrDefault(x => x.PropertyName == property.Name);
                if (correlation?.Value == null)
                    continue;

                property.SetValue(contact, correlation.Value);
            }
            return contact;
        }

Π’ΡƒΠΊ Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ заобикалямС свойствата ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°ΠΌΠ΅ SetValue.

Π—Π° яснота ΠΈ ΠΊΠ°Ρ‚ΠΎ справка Π²Π½Π΅Π΄Ρ€ΠΈΡ… Π½Π°ΠΈΠ²Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ записва стойноститС Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‚Π΅ ΠΊΠΎΡ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π΄Π²ΠΎΠΉΠΊΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² ΠΏΠΎΠ»Π΅Ρ‚Π°Ρ‚Π° Π½Π° ΠΎΠ±Π΅ΠΊΡ‚Π°. ΠŸΡ€Π΅Ρ„ΠΈΠΊΡ – Π ΡŠΡ‡Π½ΠΎ.

Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° Π²Π·Π΅ΠΌΠ΅ΠΌ BenchmarkDotNet ΠΈ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ производитСлността. И извСднъТ... (спойлСр - Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ правилният Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚, подробноститС са ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ)

ΠΠ΅ΡƒΡΠΏΠ΅ΡˆΠ½Π° статия Π·Π° ускоряванС Π½Π° Ρ€Π°Π·ΠΌΠΈΡΡŠΠ»

Какво Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ Ρ‚ΡƒΠΊ? ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚Ρ€ΠΈΡƒΠΌΡ„Π°Π»Π½ΠΎ носят прСфикса Fast, сС ΠΎΠΊΠ°Π·Π²Π°Ρ‚ ΠΏΠΎ-Π±Π°Π²Π½ΠΈ Π² ΠΏΠΎΡ‡Ρ‚ΠΈ всички ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈ ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ с прСфикс Slow. Π’ΠΎΠ²Π° Π²Π°ΠΆΠΈ ΠΊΠ°ΠΊΡ‚ΠΎ Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‚Π°ΠΊΠ° ΠΈ Π·Π° скоростта Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°. ΠžΡ‚ Π΄Ρ€ΡƒΠ³Π° страна, красивото ΠΈ Π΅Π»Π΅Π³Π°Π½Ρ‚Π½ΠΎ внСдряванС Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡ€Π°Π½Π΅ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° LINQ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π·Π° Ρ‚ΠΎΠ²Π°, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π΅ възмоТно, Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ², Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ намалява производитСлността. Π Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π΅ ΠΎΡ‚ Ρ€Π΅Π΄. ВСндСнцията Π½Π΅ сС промСня с Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ Π±Ρ€ΠΎΠΉ пасовС. ЕдинствСната Ρ€Π°Π·Π»ΠΈΠΊΠ° Π΅ Π² ΠΌΠ°Ρ‰Π°Π±Π°. Π‘ LINQ Π΅ 4 - 200 ΠΏΡŠΡ‚ΠΈ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ, ΠΈΠΌΠ° ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π±ΠΎΠΊΠ»ΡƒΠΊ ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ Π² ΡΡŠΡ‰ΠΈΡ ΠΌΠ°Ρ‰Π°Π±.

ΠΠšΠ’Π£ΠΠ›Π˜Π—Π˜Π ΠΠ

НС повярвах Π½Π° ΠΎΡ‡ΠΈΡ‚Π΅ си, Π½ΠΎ ΠΏΠΎ-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ Π΅, Ρ‡Π΅ Π½Π°ΡˆΠΈΡΡ‚ ΠΊΠΎΠ»Π΅Π³Π° Π½Π΅ повярва Π½ΠΈΡ‚ΠΎ Π½Π° ΠΎΡ‡ΠΈΡ‚Π΅ ΠΌΠΈ, Π½ΠΈΡ‚ΠΎ Π½Π° ΠΊΠΎΠ΄Π° ΠΌΠΈ - Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π’ΠΈΡ…ΠΎΠ½ΠΎΠ² 0x1000000. Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΌΠΎΠ΅Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‚ΠΎΠΉ брилянтно ΠΎΡ‚ΠΊΡ€ΠΈ ΠΈ посочи Π³Ρ€Π΅ΡˆΠΊΠ°, която пропуснах ΠΏΠΎΡ€Π°Π΄ΠΈ Ρ€Π΅Π΄ΠΈΡ†Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π½ΠΈ Π΄ΠΎ ΠΊΡ€Π°ΠΉΠ½ΠΈ. Π‘Π»Π΅Π΄ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π½Π° открития бъг Π² настройката Π½Π° Moq, всички Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ си Π΄ΠΎΠΉΠ΄ΠΎΡ…Π° Π½Π° мястото. Π‘ΠΏΠΎΡ€Π΅Π΄ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ повторния тСст основната тСндСнция Π½Π΅ сС промСня - LINQ всС ΠΎΡ‰Π΅ влияС ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π²ΡŠΡ€Ρ…Ρƒ производитСлността, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π₯ΡƒΠ±Π°Π²ΠΎ Π΅ ΠΎΠ±Π°Ρ‡Π΅, Ρ‡Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° с компилацията Π½Π° Expression Π½Π΅ Π΅ Π½Π°ΠΏΡ€Π°Π·Π½Π° ΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ Π΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΡ‚ΠΎ Π² Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‚Π°ΠΊΠ° ΠΈ във Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° изпълнСниС. ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ стартиранС, ΠΊΠΎΠ³Π°Ρ‚ΠΎ сС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€Π°Ρ‚ статичнитС ΠΏΠΎΠ»Π΅Ρ‚Π°, СстСствСно Π΅ ΠΏΠΎ-Π±Π°Π²Π½ΠΎ Π·Π° β€žΠ±ΡŠΡ€Π·ΠΈΡβ€œ ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ слСд Ρ‚ΠΎΠ²Π° ситуацията сС промСня.

Π•Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΠΎΡ‚ повторния тСст:

ΠΠ΅ΡƒΡΠΏΠ΅ΡˆΠ½Π° статия Π·Π° ускоряванС Π½Π° Ρ€Π°Π·ΠΌΠΈΡΡŠΠ»

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅: ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² прСдприятиС, няма особСна Π½ΡƒΠΆΠ΄Π° Π΄Π° прибягватС Π΄ΠΎ Ρ‚Ρ€ΠΈΠΊΠΎΠ²Π΅ - LINQ Ρ‰Π΅ изядС ΠΏΠΎΠ²Π΅Ρ‡Π΅ производитСлността. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ с високо Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ изискват оптимизация, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° спСститС ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π½ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ осигурят β€žΠ±ΡŠΡ€Π·Π°β€œ Π»ΠΎΠ³ΠΈΠΊΠ°. По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚Π΅ ΠΊΠ°ΠΊΡ‚ΠΎ Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚Ρ‚Π° Π½Π° ΠΎΡ‚Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Ρ‚Π°ΠΊΠ° ΠΈ скоростта Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

ΠšΠΎΠ΄ΡŠΡ‚ Π·Π° Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊ Π΅ Π΄ΠΎΡΡ‚ΡŠΠΏΠ΅Π½ Ρ‚ΡƒΠΊ. ВсСки ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ ΠΎΡ‚Π½ΠΎΠ²ΠΎ Π΄ΡƒΠΌΠΈΡ‚Π΅ ΠΌΠΈ:
HabraReflectionTests

PS: ΠΊΠΎΠ΄ΡŠΡ‚ Π² тСстовСтС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° IoC, Π° Π² Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ²Π΅Ρ‚Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·Ρ€ΠΈΡ‡Π½Π° конструкция. Π€Π°ΠΊΡ‚ Π΅, Ρ‡Π΅ ΠΏΡ€ΠΈ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π½ΠΎΡ‚ΠΎ изпълнСниС отрязах всички Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π±ΠΈΡ…Π° ΠΌΠΎΠ³Π»ΠΈ Π΄Π° повлияят Π½Π° производитСлността ΠΈ Π΄Π° направят Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° ΡˆΡƒΠΌΠ΅Π½.

PPS: Благодаря Π½Π° потрСбитСля Π”ΠΌΠΈΡ‚Ρ€ΠΈΠΉ Π’ΠΈΡ…ΠΎΠ½ΠΎΠ² @0x1000000 Π·Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π° ΠΌΠΈ ΠΏΡ€ΠΈ настройванСто Π½Π° Moq, която повлия Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ измСрвания. Ако някой ΠΎΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈΡ‚Π΅ ΠΈΠΌΠ° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½Π° ΠΊΠ°Ρ€ΠΌΠ°, моля, харСсайтС Π³ΠΎ. Π§ΠΎΠ²Π΅ΠΊΡŠΡ‚ спря, Ρ‡ΠΎΠ²Π΅ΠΊΡŠΡ‚ ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅, Ρ‡ΠΎΠ²Π΅ΠΊΡŠΡ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈ ΠΎΡ‚Π½ΠΎΠ²ΠΎ ΠΈ посочи Π³Ρ€Π΅ΡˆΠΊΠ°Ρ‚Π°. Мисля, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π΅ достойно Π·Π° ΡƒΠ²Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡŠΡ‡ΡƒΠ²ΡΡ‚Π²ΠΈΠ΅.

PPPS: Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° щатСлния Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π», ΠΊΠΎΠΉΡ‚ΠΎ стигна Π΄ΠΎ Π΄ΡŠΠ½ΠΎΡ‚ΠΎ Π½Π° стила ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π°. Аз съм Π·Π° Π΅Π΄Π½ΠΎΠΎΠ±Ρ€Π°Π·ΠΈΠ΅ ΠΈ удобство. Дипломатичността Π½Π° прСзСнтацията оставя ΠΌΠ½ΠΎΠ³ΠΎ Π΄Π° сС ΠΆΠ΅Π»Π°Π΅, Π½ΠΎ Π²Π·Π΅Ρ… ΠΊΡ€ΠΈΡ‚ΠΈΠΊΠ°Ρ‚Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄. ΠŸΠΈΡ‚Π°ΠΌ Π·Π° снаряда.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: www.habr.com

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€