|
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
|
|
Как измерить скорость работы кода24.11.2009, 05:33. Показов 14229. Ответов 11
Метки нет (Все метки)
Хочу оптимизировать свой код и найти самые медленные места
Можно как то измерить к примеру сколько времени занимает выполнение отдельного цикла или функции ?
0
|
|
| 24.11.2009, 05:33 | |
|
Ответы с готовыми решениями:
11
Можно ли измерить время работы участка кода в тактах процессора? Как измерить скорость записи на диск ? Как измерить потраченное время на выполнение кода |
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 24.11.2009, 05:40 | |
|
оптимизацию можно проводить исследуя ассемлерный код, очь хорошо видно слабые места.
а если требуется посчитать время работы, то можно прогнать ваш цикл без пауз много много раз и засеч время, таймер считает вроде с точностью до милисекунды, тоесть время измерения(зацикливания вашего цикла) хотя бы раз в 10 должно превосходить это время. собственно, потом делишь время измерения на количество циклов и получаешь примерное время работы цикла. но собственно, если владеешь познаниями в области ассемблера, можно опять же по ассемлерному коду посчитать количество операций и умножить на время выполнения одной операции. время выполнения напрямую зависит от тактовой частоты вашего процессора.
0
|
|
|
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
|
|
| 24.11.2009, 05:51 [ТС] | |
|
а засечь время это как что за таймер как его поставить в C++?
про ассемблер тоже если можно пример можно ли его вообще в visual studio увидеть этот ассемблер Хотя конечно хотелось бы самый простой способ с С++
0
|
|
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
|||
| 24.11.2009, 09:50 | |||
|
Короче, задумайся о конечной цели. Не нужно оптимизировать то, что оптимизировать не нужно.
0
|
|||
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
||
| 24.11.2009, 10:50 | ||
|
конечно, оптимизировать некритические куски кода не к чему, но с другой стороны порой без оптимизации не обойтись. может, товарищ, nill микроконтроллеры программирует и хочет разбор кадров производить в обработчике прерываний, да так чтобы кадры не терять. есть много областей применения языка С/С++ где счёт идёт на микросекунды и процы с тактовой до сотни мегагерц, вот там неоптимально написанный код может сделать большой "Упс!!".
0
|
||
|
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
|
|
| 24.11.2009, 13:45 [ТС] | |
|
CheshireCat
конечно я подумал о том нужна ли она вообще в первую очередь зачем тратить время на что то ненужное код работает правильно но очень медленно из за кучи вложенных циклов и это на 3гигагерц я конечно исправляю и удаляю где что могу но хотелось бы понять где самое слабое место по времени его выполнения вобщем хотелось бы увидеть пример а то пока ничего конкретного если конечно это вообще возможно измерять время выполнения отдельных участков кода
0
|
|
|
377 / 228 / 79
Регистрация: 24.11.2009
Сообщений: 695
|
|||||||
| 24.11.2009, 14:12 | |||||||
|
замечание: 1. QueryPerformanceFrequency имеет очень долгий "оверхед" - порядка 1мкс.. 2. Вариант на вики для для MS Visual C++, для g++ будет что-то подобное:
1
|
|||||||
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|||
| 24.11.2009, 14:35 | |||
|
вот и мне сказали как ассемлерный код посмотреть
для вижуал 2008 так
Добавлено через 1 минуту __asm исправил, потом вскобках компилятор начал путаться где-то сдесь ("rdtsc" : "=A" (d) )
0
|
|||
|
MCSD: APP BUILDER
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
|
|
| 24.11.2009, 14:37 | |
|
TanT,
пример из вики нормально прошёл, а вашим кодом давиться вижуал потому что этот код не для Visual C++
0
|
|
|
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
|
||
| 24.11.2009, 15:19 | ||
|
Если код работает правильно, то: 1. обязательно напиши автоматический тест для алгоритма (например, я пользую UnitTest++) - который будет при каждой сборке автоматически проверять, что ты ничего не "сломал" при оптимизации. 2. Начинай не с оптимизации кода, а с оптимизации АЛГОРИТМА! Алгоритмическая оптимизация дает 90% эффекта - или больше, если получится. Нет смысла вылизывать машинные такты в ассемблерном коде, если алгоритм плох. 3. Ну и используй инструменты типа Intel Vtune, он с ходу покажет тебе наиболее "горячие" точки твоего кода... У него триальный период, ежели мой склероз мне не изменяет, 30 дней - вроде бы, хватит....
0
|
||
|
эволюционирую потихоньку
468 / 466 / 91
Регистрация: 30.06.2009
Сообщений: 1,401
|
|
| 24.11.2009, 16:31 | |
|
0
|
|
|
11 / 11 / 2
Регистрация: 16.08.2009
Сообщений: 434
|
|
| 25.11.2009, 02:02 [ТС] | |
|
CheshireCat
скачал AutomatedQA AQTime вроде то что нужно замерил мне время выполнения для каждой функции, функции с включенными в нее функциями и отдельных срр файлов измерить выполнение отдельного цикла не нашел как, а хотелось бы по UnitTest++ я вообще не понял как его использовать а по Intel Vtune плохие отзывы и советуют вместо него AutomatedQA AQTime
0
|
|
| 25.11.2009, 02:02 | |
|
Помогаю со студенческими работами здесь
12
Как измерить время работы программы по сортировке массива? Измерить скорость воздушного потока
Как измерить скорость интернета! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|