Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
JuzTosS
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 8
#1

Что работает быстрее? - C++

12.03.2010, 13:12. Просмотров 653. Ответов 10
Метки нет (Все метки)

Подскажите пожалуйста, какая из данных реализаций будет работать бытрее?

C++
1
2
3
4
5
6
7
8
9
10
11
12
int a = 5;
int b = 3;
int c = 4;
int d,e,f;
 
//эта
d = a+b;
e = b+c;
f  = d*e;
 
//или эта
f = (a+b)*(b+c);
Нужно записать громоздкую формулу, вот и думаю, стоит ли ёё разбивать на подформулы или нет.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2010, 13:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Что работает быстрее? (C++):

Что работает быстрее? - C++
Здравствуйте! Друзья, что лучше (правильнее) использовать: for(int i=0; i<strlen(ABC); ++i) {} или int i=0; int...

Оптимизация. Что быстрее работает: cout или printf - C++
Что быстрее работает: cout или printf ????????? Добавлено через 32 минуты ЕЩе вот что: Как выводить число типа флоат с 2 знаками...

C# работает быстрее чем С++ - C++
имеется файл типа 6 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0 2.0 3.0 4 5 6 7 1.0...

Что выполняется быстрее? - C++
Что выполняется быстрее (в первом случае идет вычисление адреса элемента массива, а во втором вычисляется сам элемент, причем известно что...

Умножение - что быстрее - C++
1) a = 0; a = x * y; 2)a = 0; for (int i = 0; i < y; ++i) { a += x; } И, если второй вариант быстрее, при каких Y он...

Что быстрее: i++ или ++i ? - C++
Только что прочитала в интернете, что префиксный итератор быстрее, чем постфиксный. Так ли это? Если так и если в С++ все есть обьект, то...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Delphin_KKC
UNIX-way
710 / 495 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
12.03.2010, 13:16 #2
Если записать всё одной формулой - то выиграете пару MOVов в ассемблере. На современных компах это несущественно если только Вы не собираетесь десятки тысяч раз в секунду формулу вычислять
А вот в читабельности кода проиграете существенно.
JuzTosS
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 8
12.03.2010, 13:23  [ТС] #3
Собираюсь считать много, так что думаю важно.

Ландно, напишу пока как удобнее читать, а потом когда полностью прогу допишу, попробую и так и так, если что-то выйграю, тогда перепишу.

Спасибо, Delphin_KKC. =)
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 378
Регистрация: 30.03.2009
Сообщений: 16,155
Записей в блоге: 26
12.03.2010, 14:06 #4
В режиме с оптимизациями оба варианта дадут один и тот же код
JuzTosS
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 8
12.03.2010, 14:11  [ТС] #5
Это в настройках компилятора?
Delphin_KKC
UNIX-way
710 / 495 / 17
Регистрация: 15.01.2009
Сообщений: 1,721
12.03.2010, 14:16 #6
Цитата Сообщение от JuzTosS Посмотреть сообщение
Это в настройках компилятора?
Да. Только иногда оптимизация может нести вред.
Например в таком коде:
C++
1
2
3
4
5
6
int a;
int b;
a=2;
b=2*a;
//...ещё какойто код
b=5+2*a;
Оптимизатор может урезать до b=2*2; а инициализацию а вообще выбросить.
В результате во втором вхождении в а будет в лучшем случае ноль.
Один раз сталкивался с таким поведением. Правда в паскалевском компиляторе.
Возможно в новых версиях этот недостаток устранён.
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 378
Регистрация: 30.03.2009
Сообщений: 16,155
Записей в блоге: 26
12.03.2010, 14:17 #7
Цитата Сообщение от JuzTosS Посмотреть сообщение
Это в настройках компилятора?
Если у тебя всякие виндузовые студии, то обычно это выражают в терминах типа сборки (Debug или release). Если ты используешь компилятор напрямую с командной строки, то надо подавать опции оптимизации
JuzTosS
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 8
12.03.2010, 14:27  [ТС] #8
Так понимаю это оно:
(см. вложения)
Миниатюры
Что работает быстрее?  
Evg
Эксперт CАвтор FAQ
17633 / 5857 / 378
Регистрация: 30.03.2009
Сообщений: 16,155
Записей в блоге: 26
12.03.2010, 14:43 #9
Вкладка "конфигурация" в левом верхнем углу. Нужно выбрать RELEASE
Если у тебя борланд, то переключатель продублирован над списком исходников, если микрософт - то где-то на панели инструментов
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,368
12.03.2010, 14:51 #10
Цитата Сообщение от Delphin_KKC Посмотреть сообщение
Оптимизатор может урезать до b=2*2; а инициализацию а вообще выбросить.
В результате во втором вхождении в а будет в лучшем случае ноль.
Один раз сталкивался с таким поведением. Правда в паскалевском компиляторе.
Возможно в новых версиях этот недостаток устранён.
Это явный баг компилятора.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
13.03.2010, 12:12 #11
тоже самое
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2010, 12:12
Привет! Вот еще темы с ответами:

Правда что С быстрее чем С++? - C++
Имеется в виду на исполнении, а не на момент компиляции... Наверняка такая тема уже была, но я не нашёл, если дадите ссылку также буду...

Что быстрее assembler или c++ - C++
Вопрос от новичка. Что будет быстрее по скорости выполнения и на сколько: 1) сложить a+b на C++ или на assembler 2) умножить a*b на C++...

что быстрее работать будет?? - C++
Здравствуйте) проблема такая. есть функция, возвращаемое значение которой расчитывается по разным формулам, выбор которых зависит от...

Что быстрее списки или вектор ? - C++
Всем привет. Делаю приложение и очень важна скорость обработки данных, а нужно хранить динамические массивы. В каком формате будет...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.03.2010, 12:12
Ответ Создать тему
Опции темы

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