Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оптимизация кода 
V
    Опции темы
Kirgston
Дата 26.5.2010, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Всем доброго времени суток! Собственно 2 вопросика:
1) Есть ли какие то книги по оптимизации кода для плюсов? Я конечно понимаю что можно сказать например пиши вставки на АСМ с использованием SSE2-4 . Но для меня имхо не выход. Вообщем надо именно оптимизация кода для С++. Или книга по правильному построению алгоритмов. Т.к. читаю уже 4ую книгу о С++ и постоянно узнаю какие то детали... так например узнал что работа с int быстрее чем тот же short, так же узнал что на х64 ОС использование size_t вместо int дает около 15-17% прирост в скорости. А по личному опыту узнал что std::vector раз так в 15 быстрее чем std::list . Вообщем нету книжечки которая сочитала бы в себе всякие вот таки нюансы?

2) С какой памятью быстрее работа? С динамичной или обычной? Или там уже без разницы? 

Благодарю за внимание!
PM MAIL   Вверх
SABROG
Дата 26.5.2010, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 4
Всего: 91



Что-то можно тут почитать:

http://www.agner.org/optimize/optimizing_cpp.pdf


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
Kirgston
Дата 26.5.2010, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Цитата(SABROG @  26.5.2010,  18:02 Найти цитируемый пост)
Что-то можно тут почитать:http://www.agner.org/optimize/optimizing_cpp.pdf

ооо!! благодарю! Очень класно! 

Хмм еще может и вопросик не в тему... так что зарание очень извиняюсь. Как вычислить время работы ф-ции? timeGetTime, GetTickCount и т.д. не помогают , минимальное возвращаемое = 16, ф-ция может проработать куда быстрее...
PM MAIL   Вверх
Skevalt
Дата 26.5.2010, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 30.11.2006

Репутация: нет
Всего: 3



Цитата(Kirgston @ 26.5.2010,  18:33)
Как вычислить время работы ф-ции?

Если вы программируете на Win-платформе (GetTickCount), то можно пойти разными путями:
1) Без привлечения сторонних средств можно организовать замер времени следующим образом: замерить время начала работы t1 и в цикле вызвать вашу функцию много раз (1000...100000) раз, замерить время t2 при выходе из цикла и затем среднее_время = (t2 - t1)/кол_итераций
3) Сделать asm-вставку для замера количества "тиков" процессора rdtsc как в пункте 1) и потом перевести в миллисекунды
2) Использовать профайлер/профилировщик в зависимости от среды разработки и предпочтений: vtune, TurboPower (для Builder) и CodeAnalyst

Может быть пригодится smile 

PM MAIL   Вверх
Kirgston
Дата 26.5.2010, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Благодарю! Могу ли я использовать в етих целях Intel Parallel Studio?? 
PM MAIL   Вверх
Леопольд
Дата 27.5.2010, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 943
Регистрация: 17.6.2009

Репутация: 10
Всего: 13



Цитата(Kirgston @  26.5.2010,  17:54 Найти цитируемый пост)
1) Есть ли какие то книги по оптимизации кода для плюсов?
Собираешься писать под реал-тайм ОС? ПО для космических спутников и т.п.?
Я к тому, что этим вопросом надо задаваться только тогда, когда он встанет перед тобой ребром. А насчёт того что вектор надо использовать по умолчанию, это во многих книгах написано. Рекомендую "пробежаться" по этому списку весьма полезной литературы...


Это сообщение отредактировал(а) Леопольд - 27.5.2010, 08:20


--------------------
вопросов больше чем ответов
PM MAIL   Вверх
Dem_max
Дата 27.5.2010, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



Юзай QueryPerformanceFrequency и QueryPerformanceCounter


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
xvr
Дата 27.5.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



PM MAIL   Вверх
GoldFinch
Дата 27.5.2010, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



замер производительности надо делать встроенной функцией 
__int64 __rdtsc(); //  (#include "intrin.h")
переводить такты во время бессмысленно %)
PM MAIL ICQ   Вверх
borisbn
Дата 27.5.2010, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(GoldFinch @  27.5.2010,  12:14 Найти цитируемый пост)
переводить такты во время бессмысленно %)

и потом сравнивать два компьютера (например с тактовой 1.7 и 2.4 ГГц) по тактам ?

Добавлено через 5 минут и 7 секунд
Я давно для себя сделал классик измерения времени работы функций. см. аттач


Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  TimeMeasure.h 1,91 Kb


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
GoldFinch
Дата 27.5.2010, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



borisbn, в том-то и дело, что число тактов не зависит от тактовой частоты компьютера,
по этому можно сравнивать результаты полученные на разных тактовых частотах
(разные компьютеры, один компьютер, но частота меняется (бывает))


алсо ваш файл меряет с большой погрешностью.

Это сообщение отредактировал(а) GoldFinch - 27.5.2010, 14:58
PM MAIL ICQ   Вверх
Kirgston
Дата 27.5.2010, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 792
Регистрация: 24.12.2007

Репутация: нет
Всего: 2



Ребята очень благодарю!!!


Цитата(GoldFinch @  27.5.2010,  14:57 Найти цитируемый пост)
в том-то и дело, что число тактов не зависит от тактовой частоты компьютера,

Если не ошибаюсь то в АМД и Интел будет сугубо разное число тактов. Чисто из-за того что одна АСМ команда на АМД выполняеться например за 2 такта, а на Интел за 3. Хотя да ... какая разница? О.о меньше тактов - быстрее
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0847 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.