Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
phtnr
1 / 1 / 1
Регистрация: 31.03.2014
Сообщений: 62
1

Оптимизирует ли компилятор выражения в цикле типа 90*M_PI или каждую итерацию в цикле считает заново?

30.07.2014, 19:44. Просмотров 530. Ответов 7
Метки нет (Все метки)

Занялся сабжем по проекту. IDE Builder 2010
1) Оптимизирует ли компилятор выражения в цикле типа 90*M_PI или каждую итерацию в цикле считает заново?
2) Будет ли выигрыш от принудительного приведения типов? Типа таких строчек
a = b * 2.1;
a = b * 2.1f;
Где а и b типа float, ведь по хорошему в 1 выражении b должно привестись к double, а потом полученное произведение к float
3) Какие-нибудь еще не очевидные советы по сабжу. К примеру недавно узнал что в квадрат или 3 степень быстрее через простое умножение, нежели через pow(). Может какие-нибудь еще математические библиотеки есть специальные где стандартные функции быстрее вычисляются?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.07.2014, 19:44
Ответы с готовыми решениями:

Функции. Не считает последнюю итерацию в цикле
Добрый вечер. Не могу понять, почему в цикле не считает 12 итерацию. Ниже...

Объявляется ли каждую итерацию переменная-счетчик в цикле for?
Всем привет, расскажу историю возникшего вопроса. Отходил я как-то на курсы...

Вывести итерацию в цикле
Здравствуйте, заадание такое: дан отрезок с шагом h. Сделать тремя способами:...

Task показывает одинаковую итерацию в цикле
Добрый вечер, пытаюсь с помощью Task создать несколько процессов и запустить...

Std::getline() пропускает итерацию в цикле: найти и исправить ошибки в коде
Цикл for принимает на одну строку меньше чем должен. Я так понимаю это...

7
DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
30.07.2014, 20:01 2
возможно будет интересно и полезно
0
phtnr
1 / 1 / 1
Регистрация: 31.03.2014
Сообщений: 62
31.07.2014, 20:37  [ТС] 3
Спасибо
Модератор, перенесите пожалуйста тему в раздел C++, думаю будет более правильно
0
SatanaXIII
Почетный модератор
Эксперт С++
5773 / 2773 / 377
Регистрация: 01.11.2011
Сообщений: 6,743
Завершенные тесты: 1
01.08.2014, 10:57 4
Цитата Сообщение от phtnr Посмотреть сообщение
Оптимизирует ли компилятор выражения
Смотрите ассемблерный выход.
Цитата Сообщение от phtnr Посмотреть сообщение
должно привестись к double
Зачем это еще? Приводится к ближайшему большему.
Цитата Сообщение от phtnr Посмотреть сообщение
Может какие-нибудь еще математические библиотеки есть специальные где стандартные функции быстрее вычисляются?
Вы сейчас хотите заняться преждевременной оптимизацией. Больше хлопот себе доставите.
Цитата Сообщение от phtnr Посмотреть сообщение
перенесите пожалуйста тему в раздел C++
Если все это рассматривать в контексте борландового компилятора, то пусть здесь лежит.
0
phtnr
1 / 1 / 1
Регистрация: 31.03.2014
Сообщений: 62
02.08.2014, 01:14  [ТС] 5
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Приводится к ближайшему большему
Ну а разве 2.1 не рассматривается компилятором как double константа и соответственно меняет тип на который множится число?
0
DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
02.08.2014, 01:23 6
Цитата Сообщение от phtnr Посмотреть сообщение
Ну а разве 2.1 не рассматривается компилятором как double константа и соответственно меняет тип на который множится число?
Возникает вопрос, что мы знаем о double и float
0
phtnr
1 / 1 / 1
Регистрация: 31.03.2014
Сообщений: 62
02.08.2014, 01:26  [ТС] 7
А по теме?
То что занимают разный размер в памяти.
0
DeadHipo
85 / 85 / 33
Регистрация: 21.09.2013
Сообщений: 339
02.08.2014, 01:57 8
phtnr,
Не знаю на сколько верн это, но как то так
C++
1
2
3
4
float c = 1;
sizeof(c * 2.1f); //4
sizeof(float (c * 2.1));//4
sizeof(c * 2.1);//8
выходит что в последнем как раз double

Добавлено через 16 минут
Но по сути, я не думаю, что будет большой прирост от приведения. И в pow включены варианты со степенью 0 и 1, а если у тебя большое выражение расписанное без pow которое потом будет возведено в 0? Смысл считать.
0
02.08.2014, 01:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.08.2014, 01:57

Почему не считает в цикле for ( x = x++ )
Добрый день Столкнулся с такой проблемой. package p143; public class...

Ошибка в цикле (Не считает до конца)
Проблема следующая. Есть программа расчета пассивного участка траектории для...

Цикл в цикле, не считает сумму
Задача стояла такая: нужно найти значения xi по формуле:...


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

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

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