НСподходяща статия Π·Π° ускорСниС Π½Π° рСфлСксията

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

Π—Π°ΠΏΠΎΡ‡Π½Π°Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си ΠΏΠΎΠ΄ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΎΡ‚ Ρ‚Π°Π·ΠΈ статия: Π—Π°Ρ‰ΠΎ рСфлСксията Π΅ Π±Π°Π²Π½Π°

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

ΠŸΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ Π²ΠΈΠ½Π°Π³ΠΈ съм сподСлял Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅ относно скоростта Π½Π° рСфлСксията, Π½Π΅ Π²ΡŠΠ·Π½Π°ΠΌΠ΅Ρ€ΡΠ²Π°Ρ… особСно Π΄Π° поставям ΠΏΠΎΠ΄ съмнСниС ΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° Π°Π²Ρ‚ΠΎΡ€Π°.

НС рядко сС срСщам с Π½Π°ΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° рСфлСксия Π² ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Π°Ρ‚Π° срСда. Π’Π·Π΅ΠΌΠ° сС Ρ‚ΠΈΠΏ. Π’Π·Π΅ΠΌΠ° сС информация Π·Π° свойство. Извиква сС ΠΌΠ΅Ρ‚ΠΎΠ΄ SetValue ΠΈ всички са Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ. Бтойността Π΅ ΠΏΠΎΡΡ‚ΡŠΠΏΠΈΠ»Π° Π² Ρ†Π΅Π»Π΅Π²ΠΎΡ‚ΠΎ ΠΏΠΎΠ»Π΅, всички са Π΄ΠΎΠ²ΠΎΠ»Π½ΠΈ. Π₯ΠΎΡ€Π°Ρ‚Π° са доста ΠΈΠ½Ρ‚Π΅Π»ΠΈΠ³Π΅Π½Ρ‚Π½ΠΈ β€” ΡΠ΅Π½ΡŒΠΎΡ€ΠΈ ΠΈ Ρ‚ΠΈΠΌΠ»ΠΈΠ΄ΠΎΠ²Π΅ β€” ΠΏΠΈΡˆΠ°Ρ‚ свои Ρ€Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π° object, основавайки сС Π½Π° Ρ‚Π°ΠΊΠ°Π²Π° Π½Π°ΠΈΠ²Π½Π° рСализация Π½Π° β€žΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»Π½ΠΈβ€œ ΠΌΠ°ΠΏΠΏΠ΅Ρ€ΠΈ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ Ρ‚ΠΈΠΏ Π² Π΄Ρ€ΡƒΠ³. Π‘ΡŠΡ‰Π½ΠΎΡΡ‚Ρ‚Π° Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ: Π²Π·ΠΈΠΌΠ°ΠΌΠ΅ всички ΠΏΠΎΠ»Π΅Ρ‚Π°, Π²Π·ΠΈΠΌΠ°ΠΌΠ΅ всички свойства, ΠΈΡ‚Π΅Ρ€ΠΈΡ€Π°ΠΌΠ΅ ΠΏΠΎ тях: ΠΏΡ€ΠΈ съвпадСниС Π½Π° ΠΈΠΌΠ΅Π½Π°Ρ‚Π° Π½Π° Ρ‡Π»Π΅Π½ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Ρ‚ΠΈΠΏΠ° ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°ΠΌΠ΅ SetValue. ΠŸΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΎ улавямС ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈ пропуски Ρ‚Π°ΠΌ, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Π½Π΅ смС Π½Π°ΠΌΠ΅Ρ€ΠΈΠ»ΠΈ някакво свойство Ρƒ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅, Π½ΠΎ ΠΈ Ρ‚ΡƒΠΊ ΠΈΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π° производитСлността. Try/catch.

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

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

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

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

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

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

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

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

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

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

Π‘Π΅Π³Π° Π·Π° ΠΊΠΎΠ΄Π°. НСка Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€, основан Π½Π° моята Π½Π΅ΠΎΡ‚Π΄Π°Π²Π½Π°ΡˆΠ½Π° Π±ΠΎΠ»ΠΊΠ°, с която Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° сС справя Π² сСриозСн ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΎΠ½Π΅Π½ контСкст Π½Π° сСриозна ΠΊΡ€Π΅Π΄ΠΈΡ‚Π½Π° организация. Всички Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚ΠΈ са измислСни, Π·Π° Π΄Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π½ΠΈΠΊΠΎΠΉ Π΄Π° сС сСти.

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

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

Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°ΠΌΠ΅, създавамС тСстовС. Π Π°Π±ΠΎΡ‚ΠΈ.

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

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

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

 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 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>)Expression.Lambda(setterExp, paramEntity, paramValueOriginal);

            return lambda.Compile();
        }

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

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

        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.

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

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

НСподходяща статия Π·Π° ускорСниС Π½Π° рСфлСксията

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

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

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

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

НСподходяща статия Π·Π° ускорСниС Π½Π° рСфлСксията

Извод: ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° рСфлСксия Π² прСдприятия Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС прибягва Π΄ΠΎ особСни хитрости - LINQ Ρ‰Π΅ ΠΏΠΎΠ΅ΠΌΠ΅ производитСлността ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π² Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π΅Π½ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ, изискващи оптимизация, ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π·Π°ΠΏΠ°Π·ΠΈ рСфлСксията ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€ΠΈ Π½Π° Π΄Π΅Π»Π΅Π³Π°Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ слСд Ρ‚ΠΎΠ²Π° Ρ‰Π΅ осигуряват "Π±ΡŠΡ€Π·Π°" Π»ΠΎΠ³ΠΈΠΊΠ°. Π’Π°ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΡ‚Π΅ ΠΈ Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚Ρ‚Π° Π½Π° рСфлСксията, ΠΈ скоростта Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

ΠšΠΎΠ΄ΡŠΡ‚ с Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠ° Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ Ρ‚ΡƒΠΊ. Всички ΠΆΠ΅Π»Π°Π΅Ρ‰ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° прСпровСрят Π΄ΡƒΠΌΠΈΡ‚Π΅ ΠΌΠΈ:
HabraReflectionTests

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

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

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster