Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Yello
Зарегистрирован: 09.03.2006 Сообщения: 107
|
Добавлено: Ср Мар 12 2008 09:37 Заголовок сообщения: В С++ - нужна ли такая оптимизация? |
|
|
Вот, допустим, кусок кода какой-то функции:
Код: |
if(!(a.vq)) return 0;
if(!(b.vq)) return 1;
if((a.vq)>(b.vq)) {min=b.vq;c=1;}
else {
min=a.vq;
if(a.vq==b.vq)c=2;else c=3;//b.vq>a.vq
}
|
Вопрос: понятно, что для оптимизации по скорости, лучше сделать так:
И дальше вместо a.vq подставить avq, В РЕЗУЛЬТАТЕ избавимся от многократного выполнения операции ".". ЭТО - ПОНЯТНО, а вопрос в следующем: А НУЖНО ЛИ ЭТО ТАК ПИСАТЬ, или компилятор и сам с такими вещами справляется (если речь идёт о gcc, microsoftccompiler) ? |
|
Вернуться к началу |
|
|
Mytilus Galloprovincialis
Зарегистрирован: 30.08.2005 Сообщения: 358 Откуда: откуда все люди родятся
|
Добавлено: Ср Мар 12 2008 19:24 Заголовок сообщения: |
|
|
То, что умеет делать компилятор, должно быть обозначено в его настройках. Конечно, готовый вариант не будет каждый раз обращаться к классу, требуя значение свойства. Вместо этого приложение будет считывать значение непосредственно с адреса в ОЗУ. Но даже если бы было иначе, разница в количестве тактов в обоих случаях настолько мала, что запусти их в цикле на миллиард витков, разницы во времени выполнения не почувствуешь. Поэтому на этот счет можно не заморачиваться. Пиши так, чтобы тебе самому понятнее было. |
|
Вернуться к началу |
|
|
Yello
Зарегистрирован: 09.03.2006 Сообщения: 107
|
Добавлено: Ср Мар 12 2008 21:52 Заголовок сообщения: |
|
|
Ну, это понятно. Спасибо.
Я просто хотел узнать - А КАК ПРИНЯТО? (у профессиональных программеров, например).
(Есть и другие элементарные "оптимизации", которые тоже скорее всего для компилятора просто однофигственны, вопрос скорее о традициях, ибо НЕ ХОЧУ СИЛЬНО ОТЛИЧАТЬСЯ ОТ ДРУГИХ). |
|
Вернуться к началу |
|
|
Mytilus Galloprovincialis
Зарегистрирован: 30.08.2005 Сообщения: 358 Откуда: откуда все люди родятся
|
Добавлено: Чт Мар 13 2008 03:29 Заголовок сообщения: |
|
|
У "профессиональных программеров" (это твое словосочетание), в данном случае, не принято создавать переменную, которой передается значение свойства (пусть даже значение возвращается приватной функцией). Это все происходит потому, что разработчики ставят акцент именно на читабельности исходного кода, а создателям компиляторов, по возможности, приходится с этим мириться и разрабатывать ПО, соответствующее программерским потребностям. |
|
Вернуться к началу |
|
|
Yello
Зарегистрирован: 09.03.2006 Сообщения: 107
|
Добавлено: Чт Мар 13 2008 06:21 Заголовок сообщения: |
|
|
Сэнькс. Понял. |
|
Вернуться к началу |
|
|
|