Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Оптимизация кода

1.8K
14 сентября 2005 года
GLAGOLA
80 / / 06.11.2004
Ребят подскажите какуе-нить литру по оптимизации кода на visual c++, желательно с ссылками где скачать, если есть конечно...Заранее спасибо
299
14 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by GLAGOLA
Ребят подскажите какуе-нить литру по оптимизации кода на visual c++, желательно с ссылками где скачать, если есть конечно...Заранее спасибо


Всмысле, что ты хочешь оптимитизировать?
Для каждой задачи разная оптимитизация.
Чтобы код летал юзай Ассемблер.

1.8K
14 сентября 2005 года
GLAGOLA
80 / / 06.11.2004
меня интересуют общие случаи, ну там где лучше сделать цикл, а где и просто подряд несколько операций записать(взамен цикла)..и т.д.
3
14 сентября 2005 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by GLAGOLA
меня интересуют общие случаи


Общих случаев оптимизации НЕ БЫВАЕТ.
Оптимизация проходит по какому либо из конкретных критериев.

991
19 сентября 2005 года
Zenhipster
157 / / 14.01.2005
Цитата:
Originally posted by GLAGOLA
меня интересуют общие случаи, ну там где лучше сделать цикл, а где и просто подряд несколько операций записать(взамен цикла)..и т.д.



Почти в каждой книге по программированию игр (особенно в старых) есть раздел по оптимизации кода. Если используешь тригонометрические функции - попробуй использовать таблицы поиска. Для вычислений с плавающей точкой можно использовать вычисления с фиксированной запятой (сейчас уже не так актуально). Выноси за пределы циклов все, что только можно. Если в цикле каждый раз вычисляется новый адрес для доступа к памяти, иногда бывает полезно вычислить шаг - приращение к адресу. Избегай деления и умножения. Но умножение все же лучше деления - по этому лучше умножать на обратную величину чем делить на прямую. Избегай лишних преобразований типов float <==> int. Подобные операции отнимают не мало процессорного времени. Тут много способов. Все зависит от конкретной задачи. Большую часть работы по оптимизации компилятор делает за тебя, но если применять неподходящий алгоритм, компилятор тут уже ничем не поможет.

http://www.geocities.com/SiliconValley/2151/opts.html

299
19 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by Zenhipster
Избегай деления и умножения. Но умножение все же лучше деления - по этому лучше умножать на обратную величину чем делить на прямую.

http://www.geocities.com/SiliconValley/2151/opts.html



Помоему это чушь.

Сейчас открыл свой любимый справочник
Умножение шестнадцатибитного числа - 11 тактов.
Деление шестанадцатибитного числа 30 тактов.

Допустим 5 * 1/5
Сначало процессору приходиться умножать 5 на 1.
А потом все равно делить на 5.
И того 41 такт.

991
19 сентября 2005 года
Zenhipster
157 / / 14.01.2005
Цитата:
Originally posted by 3D Bob
Помоему это чушь.

Сейчас открыл свой любимый справочник
Умножение шестнадцатибитного числа - 11 тактов.
Деление шестанадцатибитного числа 30 тактов.

Допустим 5 * 1/5
Сначало процессору приходиться умножать 5 на 1.
А потом все равно делить на 5.
И того 41 такт.



Вместо "5 * 1/5" всегда можно выполнить "5.0 * 0.2"
И никаких делений при этом не происходит, а арифметический результат - тот же. Если вы делите на константу, то вы так же можете и умножать на константу.

1.8K
20 сентября 2005 года
GLAGOLA
80 / / 06.11.2004
а что за справочник ты используешь?, не кинешь на мыло..glagola@yandex.ru
299
20 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by GLAGOLA
а что за справочник ты используешь?, не кинешь на мыло..glagola@yandex.ru


У меня книжка.

1.8K
20 сентября 2005 года
GLAGOLA
80 / / 06.11.2004
скинь на почту плиз...glagola@yandex.ru
299
20 сентября 2005 года
3D Bob
885 / / 18.04.2005
Цитата:
Originally posted by GLAGOLA
скинь на почту плиз...glagola@yandex.ru



Тут уж тебе надо указывать почтовый индекс, город, и улицу с домом):D Но высылать не буду, самому такое добро нужно)
У мя вся докуменатция в бумажных книгах)

9.0K
25 сентября 2005 года
DarkMaster
36 / / 27.07.2005
Для начала следует установить VTune и найти все узкие места программы. После чего следует попытаться устранить часть из них.

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

Можно попробовать развернуть циклы, если тело цикла не очень велико и не содержит вызовов процедур. Разворот циклов лучше делать четырехкратный. На Пнях даст прирост производительность в 2 раза.

При развертке циклов следует помнить, что развернутый цикл должен уместиться в кеш.

Заменить вызов процедур, далающих небольшое количество элементарные дествия, своим кодом без вызова процедур.

Можно попытатья убрать часть условных операторов, заменяя их арифметическими действиями.

Избегать операции целочисленого деления.

В принципе есть еще куча действий, но в большинстве случаев они специфичны для каждой архитектуры.

Неплохая книга по оптимизации, это книга Касперского по эффективному использованию памяти.
1.8K
25 сентября 2005 года
GLAGOLA
80 / / 06.11.2004
слушай а эта книжка у тебя в электронном варианте?, если да не могбы ты мне ее прислать на [email]glagola@yandex.ru[/email]
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог