|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.09.2013, 14:36 | #1 |
Пользователь
Регистрация: 03.11.2012
Сообщений: 19
|
Встраивание методов
Речь идет об атрибуте [MethodImpl(MethodImplOptions.Aggres siveInlining)]
подскажите, когда есть резон так делать? Может ли это уронить приложение? Я пробовал ставить атрибут на довольно долгом методе - вместо 100 мс он выполняется 70мс. Неплохо, но можно ли так делать? Когда возможно получить максимальный выигрыш в производительности? А другой метод как выполнялся 10 мс, так и выполняется. Какие методы успешно встраиваются, а какие - "не хотят"? Последний раз редактировалось Devdev12; 11.09.2013 в 14:41. |
11.09.2013, 21:16 | #2 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Встраивание вместо вызова метода вставляет его тело. Т.е. убираются накладные расходы на помещение аргументов в стек, безусловный переход и убирание аргументов из стека. Всё.
Это значит, что наибольший прирост получится на небольших простых методах. Например, сложение векторов: очень простой метод, выполнение тела которого сопоставимо с самим вызовом, тут будет очень хорошо заметно. Другое дело, если метод выполняется долго, тогда в сравнении с временем его выполнения время на вызов (которое убирается встраиванием) будет почти не заметно. Что касается ваших замеров, даже 10 мс - это очень долго, тут разница не должна быть заметна. Вот если вызвать 10000 раз метод из пары арифметических строк - тогда будет заметно. Также логично, что рекурсивный метод вряд ли будет встроен.
Изобретатель велосипедов
|
15.09.2013, 14:03 | #3 |
Пользователь
Регистрация: 03.11.2012
Сообщений: 19
|
спасибо, но это значит, что прирост в производительности в том примере, что я привел, не объяснить встраиванием метода, так?
|
15.09.2013, 22:50 | #4 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
Вероятно нет. Если интересны причины, можете попробовать выложить сюда пример вашего кода.
Изобретатель велосипедов
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объявление и определение методов.Напишите функции в виде методов (подпрограмм). Напишите тестирующую программу с выдачей результа | 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 |