Ülevaade artiklitest mõtiskluste kohta:
EMIT Review kohta:
Esiteks loo lihtne objekt, instantsieeri objekt ning kasuta emissiooni ja väljendit objekti väärtuse lugemiseks ja muutmiseks, ning näed, et täitmise tulemus on ootuspärane, nagu alloleval joonisel näidatud:
Benchmark, kasutades BenchmarkDotNeti võrdluseks, lugedes ainult objektiväärtusi testimiseks, töötades Net472 ja NetCoreApp31 peal, testitulemused on järgmised:
Kokkuvõte:
Nii emit kui ka expression on efektiivsemad kui peegelduse kasutamine väärtuste saamiseks ning .NET 4.7.2 raamistikus on emit parem kui väljenduse täitmise efektiivsus, kuid .NET Core 3.1 raamistikus on väljendus parem kui emissiooni täitmine.
Kui su programm peab dünaamiliselt täitma objekti vaid korra, soovitatakse kasutada peegeldust (lõppude lõpuks pole vaja uuesti kapseldada ega delegaati luua), ja kui programm peab dünaamiliselt objekti mitu korda käivitama, soovitatakse kasutada emitteri või expressionit, ning loomulikult on vaja täiendavat kapseldamist.
Testkood on järgmine:
Kui kasutatakse Expressioni objektiväärtuste saamiseks, raporteeritakse viga järgmiselt:
Tüüpi avaldist 'System.Int32' ei saa kasutada tagastustüübi 'System.Object' jaoks Ma tõesti ei tea, kuidas need inimesed seda kasutavad, nad oskavad ainult kopeerida ja kleepida!
|