|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.12.2012, 19:26 | #1 | |
Пользователь
Регистрация: 04.10.2012
Сообщений: 95
|
inline c gcc O3 медленее чем без inline
Стало жалко удалять, запостил, просто ради информации.
(как минимум в конкретно одном случае при компиляции с -O3 inline функция вызывается дольше чем -O3 без inline, но все равно быстрее всех -O2) Попался на там что программа с inline функцией, которая вызывается только в 1 месте, выполняется медленнее чем без inline. Ассеблер я не знаю, но методом проверки оказалось что с опциями gcc -O0 inline все-же быстрее как и должно быть. Подробности: Кажется глупый вопрос если почитать просто теорию. Но на практике получаю деградацию при использовании inline. (5% на всю программу, конечно не много, но нужно "ускорить" программу) Функция объявленная inline вызывается только в одной строке кода. 100%. Это функция сортировки. Поток один. Никаких других функций не вызывается (в конце вывод рез-та на консоль). Вставлял код функции в место вызова, эффект тот же то и с inline - медленнее. Цитата:
Профилированием до этого не занимался, сейчас попробую добраться до построчного анализа. А ассемблер не знаю и подавно чтобы посмотреть в чем разница после компиляции. Код выполняет математические расчеты, ногу сломаешь пока поймешь, три дня писал, поэтому не выкладываю (ну еще по личным причинам), а сократить ... там все сломается, зациклится, ...
Пишу на чистом С, плюсы спилил.
|
|
26.12.2012, 20:18 | #2 |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
как бы в -O3 уже включен -finline-functions, поэтому если ваша функция может быть инлайн - то компилятор дописал инлайн за вас.
Ну а так, ходят слухи что -О3 дает кучу артефактов, я бы им пользоваться не стал. Вот тебе полезная ссылка: http://gcc.gnu.org/onlinedocs/gcc-4....e-Options.html |
26.12.2012, 20:19 | #3 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
а вот цитата сразу (чтоб не искать)
Цитата:
|
|
26.12.2012, 21:38 | #4 |
Пользователь
Регистрация: 04.10.2012
Сообщений: 95
|
Тогда по идее должно быть все равно есть у меня inline или нету Но получается не так.
Просто интересно, пробую, т.к. катастрофически не хватает производительности. Но опции не особо влияют, надо алгоритм пересматривать. // kcachegrind неплох - сразу выдал что 60% времени у меня выполняется три строки (два вложенных цикла и условие с двумя умножениями)
Пишу на чистом С, плюсы спилил.
|
27.12.2012, 20:54 | #5 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
inline assembler qt | lem | Qt и кроссплатформенное программирование С/С++ | 5 | 15.08.2011 12:08 |
inline оператор | Selestis | Общие вопросы C/C++ | 26 | 01.07.2010 19:49 |
gcc inline assembler - обнуление переменной | gvf | Помощь студентам | 1 | 13.06.2010 19:33 |
inline asm в gcc | drRobert | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 23.08.2008 10:26 |
inline??? | пыхта4ог | Общие вопросы C/C++ | 2 | 09.11.2007 17:54 |