Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
65 / 53 / 14
Регистрация: 20.12.2013
Сообщений: 468
1

Inline функции

24.04.2018, 20:06. Просмотров 424. Ответов 3
Метки нет (Все метки)

Embarcadero RAD studio XE8
Проект на 32 бит работает с какой-то скоростью.
Ставлю 64 бит - в несколько раз медленнее. В обоих проектах поставлена галочка "генерировать самый быстрый код".
Путем поиска обнаружено,что замедление - из-за функции pow.
Т.е. похоже, что на 32 бит она как inline, а на 64 - нет. Где это установить в проекте? Вижу только в опциях для делфи что-то про inline.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.04.2018, 20:06
Ответы с готовыми решениями:

inline функции
для чего нужны inline функции?

inline assembler VS чтение по указателю
Доброе время суток. Задача состоит в чтении 1 байта по адресу указателя. Проблема с пониманием,...

Anonynuos ns Или жесткий inline
Речь скорее пойдет о компилятарах МК ( прочих это волновать не должно )): class Foo { byte v;...

cspin.h inline member function in package class
Как с эти бороться,куча warning сообщений появляется?Дело в классе самом?

3
692 / 484 / 125
Регистрация: 31.05.2013
Сообщений: 2,695
Записей в блоге: 3
24.04.2018, 22:00 2
Доброго!
К сожалению дело не в inline. Собственно компилятору все равно есть inline или нет его. Он сам решит как компилить, а inline носит рекомендательный характер.

При работе 64x приложения зависит многое:
1) Разрядность ОС
2) Версия ОС (в новых версиях там оптимизировано под 64)
3) Главный атрибут, что программа не в Debag, а скомпилированная.
4) Код, часто то что хорошо для 32, плохо для 64 b наоборот.
5) итд....

И наконец, в билдере специфический 64. В Этой теме делал сравнение
1
65 / 53 / 14
Регистрация: 20.12.2013
Сообщений: 468
24.04.2018, 22:24  [ТС] 3
Dinkin, когда pow заменил на умножение (слава богу простой квадрат), то скорость визуально стала примерно одинаковой. Но я надеялся еще что-нибудь сделать, чтобы даже ускорить - простейший пример с заполнением массива на 64 бит отработал в 2.2 раза быстрее. Эх, а здесь все так неоднозначно...
0
692 / 484 / 125
Регистрация: 31.05.2013
Сообщений: 2,695
Записей в блоге: 3
24.04.2018, 22:39 4
Цитата Сообщение от AndrSlav Посмотреть сообщение
Эх, а здесь все так неоднозначно...
Совершено верно.

Надо еще учитывать, что в билдере, не все внутренние функции переведены в 64, и внутри программы они работают через эмулятор,что замедляет вычисления. А так же размер переменных становится больше.
В общем, пока 64 это сомнительное дело.

PS. Я 64 приложения, использую пока что для работы с БД (там порядком прирост, так как преимущества в объеме памяти). В остальных вариантах я заметил, везде выигрывает x32, притом просто 32, а не Clang.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2018, 22:39

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Устронить уведомление: Functions containing switch are not expanded inline
Вот такое уведмлениесам код#ifndef Unit1H #define Unit1H...

W8027 Functions containing some return statements are not expanded inline
Доброй ночи. Я этот вопрос уже задавал - но всё же хочу попробовать устранить это предупреждение......

Inline функции - на сколько должна быть маленькая функция, чтоб она подошла под inline?
Здравствуйте. Знаю теорию, но не понимаю, на сколько должна быть маленькая функция, чтоб она...

inline функции vs инструкции inline функций
Здравствуйте. Чтобы не писать повторно код, нужно использовать функции. Но если функции компактные,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.