![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: нет Всего: 2 |
Всем доброго времени суток! Собственно 2 вопросика:
1) Есть ли какие то книги по оптимизации кода для плюсов? Я конечно понимаю что можно сказать например пиши вставки на АСМ с использованием SSE2-4 . Но для меня имхо не выход. Вообщем надо именно оптимизация кода для С++. Или книга по правильному построению алгоритмов. Т.к. читаю уже 4ую книгу о С++ и постоянно узнаю какие то детали... так например узнал что работа с int быстрее чем тот же short, так же узнал что на х64 ОС использование size_t вместо int дает около 15-17% прирост в скорости. А по личному опыту узнал что std::vector раз так в 15 быстрее чем std::list . Вообщем нету книжечки которая сочитала бы в себе всякие вот таки нюансы? 2) С какой памятью быстрее работа? С динамичной или обычной? Или там уже без разницы? Благодарю за внимание! |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 4 Всего: 91 |
||||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: нет Всего: 2 |
ооо!! благодарю! Очень класно! Хмм еще может и вопросик не в тему... так что зарание очень извиняюсь. Как вычислить время работы ф-ции? timeGetTime, GetTickCount и т.д. не помогают , минимальное возвращаемое = 16, ф-ция может проработать куда быстрее... |
|||
|
||||
| Skevalt |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 48 Регистрация: 30.11.2006 Репутация: нет Всего: 3 |
Если вы программируете на Win-платформе (GetTickCount), то можно пойти разными путями: 1) Без привлечения сторонних средств можно организовать замер времени следующим образом: замерить время начала работы t1 и в цикле вызвать вашу функцию много раз (1000...100000) раз, замерить время t2 при выходе из цикла и затем среднее_время = (t2 - t1)/кол_итераций 3) Сделать asm-вставку для замера количества "тиков" процессора rdtsc как в пункте 1) и потом перевести в миллисекунды 2) Использовать профайлер/профилировщик в зависимости от среды разработки и предпочтений: vtune, TurboPower (для Builder) и CodeAnalyst Может быть пригодится |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: нет Всего: 2 |
Благодарю! Могу ли я использовать в етих целях Intel Parallel Studio??
|
|||
|
||||
| Леопольд |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 943 Регистрация: 17.6.2009 Репутация: 10 Всего: 13 |
Собираешься писать под реал-тайм ОС? ПО для космических спутников и т.п.?
Я к тому, что этим вопросом надо задаваться только тогда, когда он встанет перед тобой ребром. А насчёт того что вектор надо использовать по умолчанию, это во многих книгах написано. Рекомендую "пробежаться" по этому списку весьма полезной литературы... Это сообщение отредактировал(а) Леопольд - 27.5.2010, 08:20 -------------------- вопросов больше чем ответов |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
Юзай QueryPerformanceFrequency и QueryPerformanceCounter
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
||||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
замер производительности надо делать встроенной функцией
__int64 __rdtsc(); // (#include "intrin.h") переводить такты во время бессмысленно %) |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 22 Всего: 135 |
и потом сравнивать два компьютера (например с тактовой 1.7 и 2.4 ГГц) по тактам ? Добавлено через 5 минут и 7 секунд Я давно для себя сделал классик измерения времени работы функций. см. аттач Присоединённый файл ( Кол-во скачиваний: 13 )
TimeMeasure.h 1,91 Kb-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 15 Всего: 26 |
borisbn, в том-то и дело, что число тактов не зависит от тактовой частоты компьютера,
по этому можно сравнивать результаты полученные на разных тактовых частотах (разные компьютеры, один компьютер, но частота меняется (бывает)) алсо ваш файл меряет с большой погрешностью. Это сообщение отредактировал(а) GoldFinch - 27.5.2010, 14:58 |
|||
|
||||
| Kirgston |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: нет Всего: 2 |
Ребята очень благодарю!!!
Если не ошибаюсь то в АМД и Интел будет сугубо разное число тактов. Чисто из-за того что одна АСМ команда на АМД выполняеться например за 2 такта, а на Интел за 3. Хотя да ... какая разница? О.о меньше тактов - быстрее |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |