Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.06.2011, 09:45   #1
FiloXSee
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 28
По умолчанию Методы оптимизации кода

Написал статью по оптимизации кода на С++. Ее можно почитать тут:
http://itw66.ru/blog/c_plus_plus/13.html

А вы какие еще способы оптимизации кода знаете? (я не говорю про оптимизацию алгоритмов. Речь идет про код вообще)
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
FiloXSee вне форума Ответить с цитированием
Старый 07.06.2011, 11:36   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

СПАМ о своих статьях в http://programmersforum.ru/forumdisplay.php?f=24
p51x вне форума Ответить с цитированием
Старый 07.06.2011, 12:38   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
x = array[ i++ ]; - более эффективно, чем
x = array[ ++i ];
наркоман штоле? если нет разницы, какой инкремент выбирать, всегда нужно брать прединкремент. для встроенных типов разницы нет, компиль и так разрулит
да и кстати, в этом примере разница от выбора инкремента ЕСТЬ, так что вообще неясно, как тут эффективность можно сравнивать
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance

Последний раз редактировалось pproger; 07.06.2011 в 13:01.
pproger вне форума Ответить с цитированием
Старый 07.06.2011, 13:46   #4
FiloXSee
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 28
По умолчанию

Читай внимательнее: смысл в этом примере не показать что прединкремент бывает оптимальнее, а рассказать, что процессор может одновременно выполнять различные действия. Например чтение из памяти, вычисление в целых и вещественных числах могут выполняться параллельно.

И тут уже от того как построен код (т.е. от последовательности операторов) может зависеть скорость его выполнения.

В данном примере, в первом случае процессор может одновременно (без ожидания сложения) начать складывать и получать значение по адресу в массиве, а во втором случае он это будет делать последовательно.
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
FiloXSee вне форума Ответить с цитированием
Старый 07.06.2011, 13:47   #5
FiloXSee
Пользователь
 
Регистрация: 07.06.2011
Сообщений: 28
По умолчанию

Конечно, если брать только процессоры Intel и компиляторы от Microsoft, то некоторые примеры почти бессмысленны. Но полезно понимать как работает процессор и как писать более эффективный код.
Портал "It Works" (http://itw66.ru), на котором веду множество блогов по программированию и философии (FiloXSee).
FiloXSee вне форума Ответить с цитированием
Старый 07.06.2011, 13:53   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

это вам не команды FPU, а команды линейные.
если массив целых чисел(int), то все сведется к
inc ecx
lea eax,[eax+ecx*4]
mov eax,[eax]
они выполняются строго последовательно.
тоже и про целочисленное умножение, которое есть цикл сложения.(это больше ко второму примеру)

и где в первом примере вообще нецелые числа?
Цитата:
При делении и извлечении корня, float работает быстрее.
FPU работает вообще с 10-байтным форматом чисел, так что ему все равно.
разница может сказатся при SIMD(вроде так, точно не помню)

да и где вообще типы данных?
многие примеры актуальны лишь при определенных типах.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 07.06.2011 в 14:01.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.06.2011, 13:53   #7
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

2FiloXSee
тогда неудачный пример ты выбрал. откуда нам известно, чем является i? может это итератор. в этом случае заявление об оптимальности первого варианта неверно
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 07.06.2011, 14:23   #8
Guy
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 398
По умолчанию

Не плохая статейка, если не читать её с мыслями как бы выпендриться на форуме в ответах.
Guy вне форума Ответить с цитированием
Старый 07.06.2011, 14:25   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Но полезно понимать как работает процессор и как писать более эффективный код.
Шаблонной эффективности оптимизации нет и быть не может. Все зависит от задачи и ситуации - в одном случае оптимизация будет выглядеть так а в другом по другому. Поэтому для хорошего программиста главное не знать наглядность примеров чьих-то либо, а понимать как эти примеры работают и почему так.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.06.2011, 14:56   #10
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Ерунда это все. Почти все подобные извращения компилятор в состоянии провести сам. Давайте еще умножение заменять сложением, или побитовыми сдвигами, так же эффективнее.
Оптимизировать алгоритмы надо, а не ерундой заниматься
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Методы оптимизации Lazio Фриланс 3 11.12.2010 12:05
методы оптимизации первого порядка Olenka555 Помощь студентам 0 21.05.2010 16:43
Методы оптимизации в Excel Raikhman Microsoft Office Excel 2 10.02.2009 11:17
задачи оптимизации kirasir Microsoft Office Excel 2 08.08.2007 00:40