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

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

Восстановить пароль Регистрация
 
JuzTosS
0 / 0 / 0
Регистрация: 03.03.2010
Сообщений: 8
12.03.2010, 13:12     Что работает быстрее? #1
Подскажите пожалуйста, какая из данных реализаций будет работать бытрее?

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++
C++ Что выполняется быстрее?
C++ Оптимизация. Что быстрее работает: cout или printf
C++ Умножение - что быстрее
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Delphin_KKC
UNIX-way
 Аватар для Delphin_KKC
710 / 494 / 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
Эксперт С++Автор FAQ
 Аватар для Evg
16822 / 5243 / 318
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 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
 Аватар для Delphin_KKC
710 / 494 / 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
Эксперт С++Автор FAQ
 Аватар для Evg
16822 / 5243 / 318
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 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
Эксперт С++Автор FAQ
 Аватар для Evg
16822 / 5243 / 318
Регистрация: 30.03.2009
Сообщений: 14,121
Записей в блоге: 26
12.03.2010, 14:43     Что работает быстрее? #9
Вкладка "конфигурация" в левом верхнем углу. Нужно выбрать RELEASE
Если у тебя борланд, то переключатель продублирован над списком исходников, если микрософт - то где-то на панели инструментов
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
12.03.2010, 14:51     Что работает быстрее? #10
Цитата Сообщение от Delphin_KKC Посмотреть сообщение
Оптимизатор может урезать до b=2*2; а инициализацию а вообще выбросить.
В результате во втором вхождении в а будет в лучшем случае ноль.
Один раз сталкивался с таким поведением. Правда в паскалевском компиляторе.
Возможно в новых версиях этот недостаток устранён.
Это явный баг компилятора.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2010, 12:12     Что работает быстрее?
Еще ссылки по теме:

Что быстрее assembler или c++ C++
C++ Что быстрее: i++ или ++i ?
C# работает быстрее чем С++ C++

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

Или воспользуйтесь поиском по форуму:
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1144 / 426 / 19
Регистрация: 23.06.2009
Сообщений: 6,141
Завершенные тесты: 1
13.03.2010, 12:12     Что работает быстрее? #11
тоже самое
Yandex
Объявления
13.03.2010, 12:12     Что работает быстрее?
Ответ Создать тему
Опции темы

Текущее время: 21:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru