Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
JuzTosS
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 8
#1

Что работает быстрее?

12.03.2010, 13:12. Просмотров 708. Ответов 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);
Нужно записать громоздкую формулу, вот и думаю, стоит ли ёё разбивать на подформулы или нет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2010, 13:12
Ответы с готовыми решениями:

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

Оптимизация. Что быстрее работает: cout или printf
Что быстрее работает: cout или printf ????????? Добавлено через 32 минуты...

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...

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

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

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

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

Спасибо, Delphin_KKC. =)
0
Evg
Эксперт CАвтор FAQ
19134 / 6978 / 522
Регистрация: 30.03.2009
Сообщений: 19,628
Записей в блоге: 30
12.03.2010, 14:06 #4
В режиме с оптимизациями оба варианта дадут один и тот же код
0
JuzTosS
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 8
12.03.2010, 14:11  [ТС] #5
Это в настройках компилятора?
0
Delphin_KKC
UNIX-way
710 / 494 / 49
Регистрация: 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; а инициализацию а вообще выбросить.
В результате во втором вхождении в а будет в лучшем случае ноль.
Один раз сталкивался с таким поведением. Правда в паскалевском компиляторе.
Возможно в новых версиях этот недостаток устранён.
0
Evg
Эксперт CАвтор FAQ
19134 / 6978 / 522
Регистрация: 30.03.2009
Сообщений: 19,628
Записей в блоге: 30
12.03.2010, 14:17 #7
Цитата Сообщение от JuzTosS Посмотреть сообщение
Это в настройках компилятора?
Если у тебя всякие виндузовые студии, то обычно это выражают в терминах типа сборки (Debug или release). Если ты используешь компилятор напрямую с командной строки, то надо подавать опции оптимизации
0
JuzTosS
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 8
12.03.2010, 14:27  [ТС] #8
Так понимаю это оно:
(см. вложения)
0
Миниатюры
Что работает быстрее?  
Evg
Эксперт CАвтор FAQ
19134 / 6978 / 522
Регистрация: 30.03.2009
Сообщений: 19,628
Записей в блоге: 30
12.03.2010, 14:43 #9
Вкладка "конфигурация" в левом верхнем углу. Нужно выбрать RELEASE
Если у тебя борланд, то переключатель продублирован над списком исходников, если микрософт - то где-то на панели инструментов
0
CheshireCat
Эксперт С++
2910 / 1259 / 114
Регистрация: 27.05.2008
Сообщений: 3,460
12.03.2010, 14:51 #10
Цитата Сообщение от Delphin_KKC Посмотреть сообщение
Оптимизатор может урезать до b=2*2; а инициализацию а вообще выбросить.
В результате во втором вхождении в а будет в лучшем случае ноль.
Один раз сталкивался с таким поведением. Правда в паскалевском компиляторе.
Возможно в новых версиях этот недостаток устранён.
Это явный баг компилятора.
0
AnonymC
1178 / 461 / 86
Регистрация: 23.06.2009
Сообщений: 6,374
Завершенные тесты: 1
13.03.2010, 12:12 #11
тоже самое
0
13.03.2010, 12:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2010, 12:12

Умножение - что быстрее
1) a = 0; a = x * y; 2)a = 0; for (int i = 0; i < y; ++i) { a += x; }...

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

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


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

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

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