Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 54151|Ответ: 3

[Источник] .NET/C# Тестирование производительности отражения, излучения, выражения

[Скопировать ссылку]
Опубликовано 21.03.2021 13:23:34 | | | |
Обзор статей о размышлениях:

.net/c# использует преимущества метода динамического выполнения отражения
https://www.itsvse.com/thread-4771-1-1.html

C# использует отражение для определения, присваивается ли свойство
https://www.itsvse.com/thread-3045-1-1.html

Отражение C# получает имя отражания свойства объекта
https://www.itsvse.com/thread-3219-1-1.html
О обзоре EMIT:

.NET/C# Emit динамически генерирует сборки
https://www.itsvse.com/thread-9597-1-1.html
Сначала создайте простой объект, создайте объект и используйте emit и expression для чтения и изменения значения объекта, и вы увидите, что результат выполнения соответствует ожидаемому, как показано на рисунке ниже:



Бенчмаркинг с использованием BenchmarkDotNet для анализа только объектных значений для тестирования, работает на Net472 и NetCoreApp31, результаты теста следующие:


.NET/C# использует BenchmarkDotNet для тестирования производительности кода
https://www.itsvse.com/thread-9576-1-1.html


Сводка:

И эмит, и выражение эффективнее, чем использование отражения для получения значений, и в фреймворке .NET 4.7.2 эмит лучше эффективности выполнения выражений, но в фреймворке .NET Core 3.1 выражение лучше, чем исполнение эмит.

Если вашей программе нужно динамически выполнять объект только один раз, рекомендуется использовать отражение (в конце концов, нет необходимости снова инкапсулировать или создавать делегата), а если нужно динамически выполнять объект несколько раз, рекомендуется использовать emit или expression, и, конечно, требуется дополнительная инкапсуляция.

Тестовый код следующий:

При использовании Expression для получения значений объектов ошибка будет отображаться следующим образом:

Выражение типа 'System.Int32' не может использоваться для возвратного типа 'System.Object'
Я правда не понимаю, как эти люди ими пользуются, они только умеют копировать и вставлять!




Предыдущий:.NET/C# Emit динамически генерирует сборки
Следующий:.NET Core вызывает решения ошибок адреса gRPC HTTP (не защищённые TLS)
 Хозяин| Опубликовано 28.04.2025 14:53:41 |
Используйте выражение для присвоения значений свойствам объекта:


Звонок:
 Хозяин| Опубликовано 28.04.2025 15:32:51 |
.NET/C# Используйте UnsafeAccessor для изменения содержимого полей только для чтения
https://www.itsvse.com/thread-10997-1-1.html
 Хозяин| Опубликовано 28.04.2025 15:40:57 |
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com