แแแจแแแแ แแแฎแกแแ แกแขแแขแแแก แกแแแแฃแ แก. แแแแแแแแ แแแแ แแแแแ แแงแ แแแ แแ, แกแแแแ แ แฉแแแแก แแแชแแแ, แแฃ แ แแแแ แฃแแแ แแแฉแฅแแ แแแฃแแแงแ แแกแแฎแแแก แแแแแงแแแแแ แแแ แขแแแ, แแแแ แแ แ แแแแแกแขแฃแ แ แแแแแแแแแก แแแแแงแแแแแแ, แแแแ แแ แแแแฉแแแ แแแแแแก แแ แแก แแฆแแแฉแแแ, แ แแ แแกแแฎแแ แแ แแ แแก แแกแแแ แแแแ, แ แแแแ แช แแ แแแแแแ, LINQ แฃแคแ แ แแแแแ, แแแแ แ แฉแแแก แแแจแแแ แแแจแ. แแแแ แแ แแแแแก แแฆแแแฉแแแ, แ แแ แแแช แจแแแชแแ แแแแแแแแแจแ... แแ แชแฎแแแ แแแแกแแฃแแ แแกแขแแ แแแก แแแขแแแแแ แญแ แแก แฅแแแจ แแ แแแแแแขแแ แแแจแแ. แแแแก แแแแ, แ แแ แแแแแแแแ แกแแแแแแ แแแแ แชแแแแแฃแแแ แแ แแ แแแชแแแจแ แแแแฎแแ แชแแแแแแฃแแ, แ แแแแ แช แแก แฉแแแฃแแแแ แแ แฎแแแแ แกแแฌแแ แแแจแ, แแฆแแแฉแแแ แกแแแแแแ แกแแแแขแแ แแกแ, แ แแแแ แช แแแฉแแแแแแ, แชแฎแแแ แแแแก แแแแแแกแขแ แแ แแแ: แแแแแแแ แกแขแแขแแแก แแแแแแ แ แแแแแก แกแแฉแฅแแ แแแ แแงแ. แแแ แแแแแ แแแแแแแก แแแแ แแ แจแแกแแแฉแแแแแ: Moq, Autofac, EF Core แแ แกแฎแแ โแกแแแแแ แแแโ.
แแแแแฌแงแ แแฃแจแแแแ แแ แกแขแแขแแแก แจแแแแแญแแแแแแแ:
แ แแแแ แช แฎแแแแแ, แแแขแแ แ แแแแแแแแแแก แจแแแแแแแแ แแแแแแแขแแแแก แแแแแงแแแแแแก, แแแชแแแแ แแแแกแ, แ แแ แแแ แแแแแ แแแแแแซแแฎแแก แแกแแฎแแแก แขแแแแก แแแแแแแแ, แ แแแแ แช แจแแกแแแแจแแแแ แแแ แแแแแชแฎแแแแก แแแแจแแแแแแแแแ แแแฉแฅแแ แแแแกแแแแก. แ แ แแฅแแ แฃแแแ, แแ แแก IL แแแแกแแ, แแแแ แแ แแ แแกแฃแ แก แแแกแ แแแแแแแ แแชแแแแแ, แ แแแแแ แแก แแ แแก แงแแแแแแ แจแ แแแแขแแแแแ แแแ แแแแแแแแแก แจแแกแแกแ แฃแแแแแแ, แ แแแแแแช แกแแแกแแ แจแแชแแแแแแแ.
แแแแก แแแแแแแแกแฌแแแแแแ, แ แแ แแ แงแแแแแแแแก แแกแแแแกแ แแแ แ แแฅแแแแ แแกแแฎแแแก แกแแฉแฅแแ แแก แจแแกแแฎแแ, แแแแกแแแฃแแ แแแแ แแ แแแแแ แแแแ แแแขแแ แแก แแแกแแแแแแแก แแญแแฅแแแจ แแแงแแแแแแก.
แกแแฌแแ แแแจแ แฎแจแแ แแ แแฎแแแแแ แ แแคแแแฅแกแแแก แแฃแแฃแแ แงแแแแ แแแแแงแแแแแแก. แขแแแ แแฆแแแฃแแแ. แแแคแแ แแแชแแ แฅแแแแแแก แจแแกแแฎแแ แแฆแแแฃแแแ. SetValue แแแแแแ แแซแแฎแแแ แแ แงแแแแแก แฃแฎแแ แแ. แฆแแ แแแฃแแแแ แแแแแแ แกแแแแแแ แแแแจแ, แงแแแแ แแแแแแแ แแ. แซแแแแแ แญแแแแแแ แฎแแแฎแ - แฃแคแ แแกแแแ แแ แแฃแแแแก แแแแแ แแแ - แฌแแ แแ แแแแแแแ แแแคแแ แแแแแแแก แแแแแฅแขแแ, แแกแแแ แแฃแแฃแแ แงแแแแ แแแแฎแแ แชแแแแแแแก แกแแคแฃแซแแแแแ, แแ แแ แขแแแแก แแแแ แแแ "แฃแแแแแ แกแแแฃแ แ" mappers. แแ แกแ แฉแแแฃแแแแ แแ แแกแแแแ: แฉแแแ แแแฆแแแ แงแแแแ แแแแก, แแแฆแแแ แงแแแแ แแแแกแแแแก, แแแแแแ แแแ แแแแแ: แแฃ แขแแแแแแก แฌแแแ แแแแก แกแแฎแแแแแ แแแแฎแแแแ, แฉแแแ แแแกแ แฃแแแแ SetValue-แก. แแ แแแแแ แ แฉแแแ แแแญแแ แ แแแแแแแแแแกแแแก แจแแชแแแแแแแก แแแแ, แกแแแแช แแแ แแแแแแแ แ แแแแ แแแแกแแแ แแ แ-แแ แ แขแแแจแ, แแแแ แแ แแฅแแช แแ แแก แแแแแกแแแแแ, แ แแแแแแช แแฃแแฏแแแแกแแแก แจแแกแ แฃแแแแแก. แกแชแแแ/แแแแญแแ แ.
แแ แแแแแฎแแแก แแแแแแแแแแ, แ แแแแแแแช แฎแแแแฎแแ แแแแแแแแ แแแ แกแแ แแแกแ แแ แ แฃแแแแก แแกแ, แ แแ แแ แแงแแแแ แกแ แฃแแแ แจแแแแ แแฆแแแฃแแแ แแ แแแคแแ แแแชแแแ, แแฃ แ แแแแ แแฃแจแแแแแ แแแแแ แแแ แ แแแฎแแแแ แแแ แแแแฅแแแแแ. แแ แแแแแฎแแแก แแแแแแแแแแ, แ แแแแแแแช แแแแแแแ แแแแแแแ แแฃแแฃแแ แงแแแแ แแแแฎแแ แชแแแแแแแแก แกแขแ แแขแแแแแแแก แแแฆแแ, แแแขแแ แคแแแกแแแแก แแแฆแแ, แแแแฅแชแแแแแก แแแฆแแ, แแแแฅแแก แแก แแแแ แแแแแก แจแแแแแแ แแแแแแแแแแก. แแกแแ แแแแแ แแแแแแ แชแฎแแแ แ แแแฌแแ. แคแแฅแขแแแ แแแแ, แแ แแ แแแแแแแ แ แแแแฃแ แ แจแแกแ แฃแแแแแก แแแแแแแ แแ, แแฃ แแก แจแแกแแซแแแแแแแ, แฃแแ แแแแ แจแแแชแแแแ แแแแฎแแ แชแแแแแแ แฃแคแ แ โแแแขแแแแแฃแ แแโ, แแฃแแ แจแแแแซแแ แแแแก แแแแแแแแ. แแแแขแแ, แฅแแแแแ แแแแฎแแแฃแแแ แแแ แแแแแ แแแแแแแแแแ แกแแ แแแแฃแแแ แแแแแแแแ.
แแคแแฅแ แแ, แแแแ แ แแฅแแแแแแแ, แ แแฎแขแแ แแก แแ แกแฎแแ แแแแแแแแแแแก แแแแฎแแแกแแก, แฌแแแฌแงแแ แกแ แฃแแแแ แกแแแแ แแแแแ แแแแชแฎแแแแแแก, แ แแ แแแแจแ แแกแแฎแแ แแ แแก แคแแแแแแแ, แ แแแแแแช แฃแแแแฃแ แแกแแ แฃแแ แงแแคแแ แแแแแแแแก แแฎแแแแก แแแแแแแชแแแก แจแแกแ แฃแแแแแแ.
แ แแคแแแฅแกแแแก แแแแแซแแฎแแแ แแแซแฃแแแแก CLR-แก, แแแแแ แแก แแกแแแแแแแแ, แ แแแ แแแแแแก แแก, แ แแช แแแก แกแญแแ แแแแ, แแแ แแคแแก แแแแ แแแขแแแแแแชแแแแแ, แแแแแแแแแแแก แแกแแแ แแ แ.แจ. แแแ แแ แแแแกแ, แแกแแฎแแ แแแแแแแ แแแแแแก แแแแแแกแแก แแฌแแแแก แแแฎแกแแแ แแแแก แแแแ แ แแแแแแแแแ แแแแแงแแคแแก. แฉแแแ แแแงแแแแแ แแแฎแกแแแ แแแแก, CLR แแฆแแแแฉแแแก GC-แก แแ แแฌแงแแแ แคแ แแแ. แจแแกแแแฉแแแแแ แแแแ แฃแแแ แแงแแก, แแแ แฌแแฃแแแ. แแแฎแกแแแ แแแแก แฃแแแ แแแแแ แ แ แแแแแแแแ แแแแแแแแ แแแ แฌแแ แแแแแแก แกแแ แแแ แแแแ แแ แฆแ แฃแแแแแแ แแแแฅแแแแแแ แฎแแแก แแ แฃแจแแแก แแแแฃแจแแแแแแก แแแ แจแแคแแ แฎแแแแแก. แกแแแแแแแแแแจแ, แ แแช แฃแคแ แ แแแขแ แแแฎแกแแแ แแแแ, แแแ แฃแคแ แ แกแแแแ แแฃแแแ, แ แแ แจแแแแฉแแแแ แ แแแแ แแฃแจแแแแก GC. แแกแแฎแแ, แแแแ แแฃแแแ, แแแกแแแแก แแแแแขแแแแแ แฌแแแแแ แแแฌแแแฃแ แแ.
แแฃแแชแ, แฉแแแ แงแแแแแแ แแแงแแแแแ IoC แแแแขแแแแแ แแแกแ แแ แแแ แแฆแแก แแแแแ แแขแแ แแแก, แ แแแแแแ แแฃแจแแแแแก แแ แแแชแแแ แแกแแแ แแแงแแ แแแ แ แแคแแแฅแกแแแก, แแแแ แแ, แ แแแแ แช แฌแแกแ, แแ แฉแแแแแ แแแแฎแแแแ แแแ แจแแกแ แฃแแแแแกแแแ แแแแแแจแแ แแแแ. แแ แ, แแ แ แแแแขแแ, แ แแ แแแแแแแแแแฃแแแแแแแก แแ แแแกแขแ แแฅแชแแ แแแ แ แจแแแฆแฃแแฃแแ แแแแขแแฅแกแขแแก แแแแแแแแแแแ แแแแแแแ แแฃแชแแแแแแแแ, แ แแ แฉแแแ แฃแแแ แจแแแฌแแ แแ แจแแกแ แฃแแแแ แแแแแกแแแแ แจแแแแฎแแแแแจแ. แงแแแแแคแแ แ แฃแคแ แ แแแ แขแแแแ - แแก แแแแแแแแแ แแ แแแแฅแแแแแแก แจแแกแ แฃแแแแแแ.
แคแแฅแขแแ, แ แแ แงแแแแแแ แแแแ แชแแแแแฃแแ แฉแแ แฉแแแแ, แ แแแแแแแช แแแคแฃแซแแแแฃแแแ แแกแแฎแแแก แขแแฅแแแแแแแแแ, แแงแแแแแแ แงแแแแ แกแแฎแแก แฎแ แแแก, แ แแ แฃแคแ แ แแแขแแแแแฃแ แแ แแแฃแจแแแ แแแกแแแ. แ แแแแ แช แฌแแกแ, แแก แแ แแก แฅแแจแ. แ แแแแ แช แฌแแกแ, แแก แแ แแก แแแแแแแแฅแแแแแแ แแ แแแแแแแขแแแ, แ แแแแแแแช แจแแแแแแแแแ แแแแแฎแแขแแแก แฎแแกแแแ. แแแแแ automapper แแแแ แฉแฃแแแแก แแแแแฃแ แแแขแฃแ แแแฅแกแแแแแก, แ แแแแแแช แจแแแกแแแแแแแ แขแแแแแก แแ แคแฃแแฅแชแแแแแแ, แ แแแแแแกแแช แจแแฃแซแแแแ แแ แแแแแแแแก แแแแแฅแชแแแ แแกแแฎแแแก แแแ แแจแ.
แ แแแแ แแแแฆแฌแแแ แแก? แแ แกแแแแแแ, แแก แแ แแคแ แแ แแแแกแฎแแแแแแแ แแ แแแแแแแกแแแแ, แ แแแแแกแแช แแแแแ แแแแขแคแแ แแ แแงแแแแแก 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();
}
แแแแแแแ แแแกแแแแแแ. แฉแแแ แแแแแแแแแแ แ แแแแกแแแแแแ, แแฅแแแแ แแแแแแแขแแแก แแแแแแแก, แ แแแแแแแช แแซแแฎแแแแ แกแแขแแ แแแก แแ แแแแแฎแแแ แแแ. แแแจแแ, แ แแชแ แกแแญแแ แแ, แแฃแ แแแแแ.
"แแแแ" (แแ แแคแแฅแกแ 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-แก.
แกแแชแฎแแแแกแแแแก แแ แแแแแแแแแกแแแแก, แแ แแแแแแฎแแ แชแแแแ แแฃแแฃแแ แงแแแแ แแแแแแ, แ แแแแแแช แฌแแ แก แแแแ แแแ แแแแชแแฃแ แ แฌแงแแแแแแแก แแแแจแแแแแแแแแก แแแ แแแแแ แแ แแแฃแแแแแก แแแแแแจแ. แแ แแคแแฅแกแ - แกแแฎแแแแซแฆแแแแแแ.
แแฎแแ แแแแฆแแ BenchmarkDotNet แแ แจแแแฎแแแแ แจแแกแ แฃแแแแแก. แแ แฃแชแแ... (แกแแแแแแ แ - แแก แแ แแ แแก แกแฌแแ แ แจแแแแแ, แแแขแแแแแ แฅแแแแแ)
แ แแก แแฎแแแแแ แแฅ? แแแแแแแแ, แ แแแแแแแช แขแ แแฃแแคแแแฃแ แแ แแขแแ แแแแ Fast แแ แแคแแฅแกแแก, แฃแคแ แ แแแแแ แแแแฅแแแก แงแแแแ แแแกแจแ, แแแแ แ แแแแแแแแ Slow แแ แแคแแฅแกแแ. แแก แแฎแแแ แ แแแแ แช แแแแแฌแแแแแแก, แแกแแแ แแฃแจแแแแแก แกแแฉแฅแแ แแก. แแแแ แแก แแฎแ แแ, แ แฃแแแแแก แแแแแแ แแ แแแแแแแขแฃแ แ แแแแฎแแ แชแแแแแแ LINQ แแแแแแแแแก แแแแแงแแแแแแ, แกแแแแช แแก แจแแกแแซแแแแแแแ, แแแ แแฅแแ, แแแแจแแแแแแแแแ แแแชแแ แแแก แแ แแแฃแฅแขแแฃแแแแแก. แแแแกแฎแแแแแแ แฌแแกแ แแแจแแ. แขแแแแแแชแแ แแ แแชแแแแแ แกแฎแแแแแกแฎแแ แ แแแแแแแแแก แแแกแแแแ. แแแแกแฎแแแแแแ แแฎแแแแ แแแกแจแขแแแจแแ. LINQ-แแ แแก 4-200-แฏแแ แแแแแ, แแแแฎแแแแแแ แแแแแ แแแกแจแขแแแแ แแแขแ แแแแแแแ.
แกแแแฎแแแแแ
แแ แแ แแฃแฏแแ แแแแ แฉแแแก แแแแแแแก, แแแแ แแ แ แแช แแแแแแ แแ, แฉแแแแก แแแแแแแก แแ แแแฃแฏแแ แ แแ แช แฉแแแก แแแแแแแก แแ แแ แช แฉแแแก แแแแก -
แแ แฎแแแแฎแแแ แขแแกแขแแก แจแแแแแ:
แแแกแแแแ: แกแแฌแแ แแแจแ แ แแคแแแฅแกแแแก แแแแแงแแแแแแกแแก แแ แแ แแก แกแแญแแ แ แฎแ แแแแแแก แแแแแงแแแแแ - LINQ แฃแคแ แ แแแข แแ แแแฃแฅแขแแฃแแแแแก แจแแญแแแก. แแฃแแชแ, แแแฆแแแ แแแขแแแ แแแแก แแแแแแแแจแ, แ แแแแแแแช แกแแญแแ แแแแแ แแแขแแแแแแชแแแก, แจแแแแซแแแแ แจแแแแแฎแแ แแกแแฎแแ แแแแชแแแแแแแขแแ แแแแก แกแแฎแแ แแ แแแแแแแ แแแฃแแ แจแแแแแแแแแแแ, แ แแช แจแแแแแ แฃแแ แฃแแแแแงแแคแก โแกแฌแ แแคโ แแแแแแแก. แแ แแแแ แแฅแแแ แจแแแแซแแแแ แจแแแแแ แฉแฃแแแ แ แแแแ แช แแกแแฎแแแก แแแฅแแแแแแ, แแกแแแ แแแแแแแชแแแก แกแแฉแฅแแ แ.
แกแแแ แแแแขแแชแแ แแแแ แฎแแแแแกแแฌแแแแแแ แแฅ. แแแแแกแแแแ แก แจแแฃแซแแแ แแแแแแแแฌแแแก แฉแแแ แกแแขแงแแแแ:
PS: แขแแกแขแแแจแ แแแแ แแงแแแแแก IoC-แก, แฎแแแ แแแแฉแแแ แแแแจแ แแก แแงแแแแแก แแจแแแ แ แแแแกแขแ แฃแฅแชแแแก. แคแแฅแขแแ, แ แแ แกแแแแแแ แแแแฎแแ แชแแแแแแแกแแก แแ แจแแแฌแงแแแขแ แงแแแแ แคแแฅแขแแ แ, แ แแแแแแช แจแแแซแแแแ แแแแแแแ แแฅแแแแแก แจแแกแ แฃแแแแแแ แแ แจแแแแแ แฎแแแฃแ แแแแ แแแฎแแแแก.
PPS: แแแแแแแ แแแแฎแแแ แแแแแก
PPPS: แแแแแแแ แแแแแแฌแแแแแ แแแแแฎแแแแก, แ แแแแแแแช แแแแแแแ แแแแฆแฌแแ แกแขแแแกแ แแ แแแแแแแก. แแ แแ แแแแแ แแแแแแแกแ แแ แแแฎแแ แฎแแแฃแแแแแก แแแแฎแ แ แแแ . แแ แแแแแขแแชแแแก แแแแแแแแขแแ แกแแกแฃแ แแแแก แขแแแแแก, แแแแ แแ แแ แแขแแแ แแแแแแแแแแกแฌแแแ. แญแฃแ แก แแแแฎแแ.
แฌแงแแ แ: www.habr.com