Название: GCC опции для максимального принудительного рекурсивного использования inline Отправлено: V1KT0P от Март 23, 2012, 00:07 Пишу специфическую вещь в которой очень ресурсоемкие математические операции. Так как операции довольно таки запутанные то я разбиваю их на более мелкие функции и делаю их inline. Так как все операции служат одной цели, то естественно хочется чтоб компилятор рекурсивно инлайнил все пока не получится одна супер большая функция, ибо вызовы функций приведут к довольно таки большим накладным расходам.
Так вот вопрос кто знает какие лучше использовать опции? Пока что я нашел вот это: Код: -finline-limit=n Код: -finline-functions Еще три параметр(правильно ли я их написал?): Код: --param max-inline-insns-recursive 450 Есть что-то еще что поможет увеличить какие-то там лимиты? Название: Re: GCC опции для максимального принудительного рекурсивного использования inline Отправлено: Bepec от Март 23, 2012, 08:04 Помоему вы немного страдаете фигнёй ;)
Где то тут в дебрях имелась крутая темка про inline. В которой предпочиталось оставлять его на откуп компилятору. При максимальной оптимизации он сам заинлайнит всё куда надо и ненадо. PS хотя вроде бы писалось, что при ВЕЛИКОМ умении можно выиграть некоторые проценты (1-3) в производительности. Название: Re: GCC опции для максимального принудительного рекурсивного использования inline Отправлено: Пантер от Март 23, 2012, 09:21 http://bit.ly/GUfkEI
Название: Re: GCC опции для максимального принудительного рекурсивного использования inline Отправлено: Tonal от Март 23, 2012, 11:00 Под рекурсивным inline-ингом, скорее всего понимается инлайнинг рекурсивных функций. Т. е. когда инлайновая функция вызывает себя напрямую или опосредовано.
Понятно, что в общем случае при попытке инлайнинга такой функции можно уйти в бесконечность. Вот компилятор и предоставляет методы управления/ограничения этой бесконечности. :) Название: Re: GCC опции для максимального принудительного рекурсивного использования inline Отправлено: V1KT0P от Март 23, 2012, 12:13 http://bit.ly/GUfkEI Думаешь я в гугле не лазил =). Вот везде советуют:Код: #define inline __forceinline Название: Re: GCC опции для максимального принудительного рекурсивного использования inline Отправлено: Igors от Март 23, 2012, 12:39 Пишу специфическую вещь в которой очень ресурсоемкие математические операции. Так как операции довольно таки запутанные то я разбиваю их на более мелкие функции и делаю их inline. Это не ответ на Ваш вопрос но, как Вы сами понимаете, любая возня с inline в лучшем случае сулит не более 5%. Есть смысл поискать др ходы1) Задействовать icc - прирост может быть ощутимым 2) Вычислять параллельно Код
3) Поанализировать сами вычисления и код (нужен хороший профайлер) Название: Re: GCC опции для максимального принудительного рекурсивного использования inline Отправлено: V1KT0P от Март 23, 2012, 12:55 Пишу специфическую вещь в которой очень ресурсоемкие математические операции. Так как операции довольно таки запутанные то я разбиваю их на более мелкие функции и делаю их inline. Это не ответ на Ваш вопрос но, как Вы сами понимаете, любая возня с inline в лучшем случае сулит не более 5%. Есть смысл поискать др ходы1) Задействовать icc - прирост может быть ощутимым 2) Вычислять параллельно Код
3) Поанализировать сами вычисления и код (нужен хороший профайлер) 2) Распараллелить будет не проблема, при чем параллелиться оно просто невероятно просто и хоть на тысячи ядер =). 3) Ну я и так знаю что там самым узким местом будет вычисление интегралов. И так там уже все оптимизировал. Название: Re: GCC опции для максимального принудительного рекурсивного использования inline Отправлено: Igors от Март 23, 2012, 13:13 2) Распараллелить будет не проблема, при чем параллелиться оно просто невероятно просто и хоть на тысячи ядер =). Здесь лучше переоценить чем недооценить 3) Ну я и так знаю что там самым узким местом будет вычисление интегралов. И так там уже все оптимизировал. Я получал по ушам в самых неожиданных местах, напрКод Лучше все-таки профилить а не полагаться на "я и так знаю" |