Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2013, 14:36   #1
Devdev12
Пользователь
 
Регистрация: 03.11.2012
Сообщений: 19
По умолчанию Встраивание методов

Речь идет об атрибуте [MethodImpl(MethodImplOptions.Aggres siveInlining)]
подскажите, когда есть резон так делать? Может ли это уронить приложение? Я пробовал ставить атрибут на довольно долгом методе - вместо 100 мс он выполняется 70мс. Неплохо, но можно ли так делать? Когда возможно получить максимальный выигрыш в производительности?
А другой метод как выполнялся 10 мс, так и выполняется. Какие методы успешно встраиваются, а какие - "не хотят"?

Последний раз редактировалось Devdev12; 11.09.2013 в 14:41.
Devdev12 вне форума Ответить с цитированием
Старый 11.09.2013, 21:16   #2
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Встраивание вместо вызова метода вставляет его тело. Т.е. убираются накладные расходы на помещение аргументов в стек, безусловный переход и убирание аргументов из стека. Всё.
Это значит, что наибольший прирост получится на небольших простых методах. Например, сложение векторов: очень простой метод, выполнение тела которого сопоставимо с самим вызовом, тут будет очень хорошо заметно.
Другое дело, если метод выполняется долго, тогда в сравнении с временем его выполнения время на вызов (которое убирается встраиванием) будет почти не заметно.
Что касается ваших замеров, даже 10 мс - это очень долго, тут разница не должна быть заметна. Вот если вызвать 10000 раз метод из пары арифметических строк - тогда будет заметно.
Также логично, что рекурсивный метод вряд ли будет встроен.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 15.09.2013, 14:03   #3
Devdev12
Пользователь
 
Регистрация: 03.11.2012
Сообщений: 19
По умолчанию

спасибо, но это значит, что прирост в производительности в том примере, что я привел, не объяснить встраиванием метода, так?
Devdev12 вне форума Ответить с цитированием
Старый 15.09.2013, 22:50   #4
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Вероятно нет. Если интересны причины, можете попробовать выложить сюда пример вашего кода.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объявление и определение методов.Напишите функции в виде методов (подпрограмм). Напишите тестирующую программу с выдачей результа Vika_0_0 C# (си шарп) 0 04.10.2012 15:21
Встраивание html кода в страницу nikmay Общие вопросы .NET 1 31.01.2012 16:39
Встраивание формы в чужой сайт KLAXON JavaScript, Ajax 7 21.03.2011 15:56
Встраивание таблиц Word или Excel yngwie Win Api 2 23.06.2009 20:55
Встраивание в контекстное меню проводника Никки Общие вопросы Delphi 3 25.06.2008 23:17