0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 11
|
|
1 | |
Замер времени работы участка кода27.03.2016, 23:46. Показов 1910. Ответов 6
Метки нет (Все метки)
Сразу скажу что меня не интересуют стандартные замеры времени роботы участка кода, так как они показывают время роботы данного участка кода + время роботы других процессов (до момента завершения участка кода) -- это я говорю исходя из роботы планировщиков задач (если я не прав прошу поправте меня).
Вопрос состоит в следующем, как замереть время роботы только данного процесса (определенный участок кода) и возможно ли это вообще ? P.s.: Нашел способ дать процессу высший приоритет но все же наверняка он с таким приоритетом будет не один, по тому и ищу другие способы. С уважением, ваш покорный новичок.
0
|
27.03.2016, 23:46 | |
Ответы с готовыми решениями:
6
Методы защиты данных от записи во время выполнения участка кода? Время выполнения участка кода Замер времени выполнения программного кода Замер времени работы функции через clock() |
Почетный модератор
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,907
|
|
28.03.2016, 15:32 | 2 |
Тут надо копать уже в сторону операционной системы (пытаться выполнить код до загрузки системы, чтобы она не отжирала ресурсы), либо устройства процессора. Потому как что считать временем работы кода непонятно. Сколько тиков процессора ушло на выполнение данного кода и это число умножить на частоту? Или еще подсчитать количество обращений к памяти и умножить на частоту шины?
Время работы кода и есть время, за которое он отработает на конкретной машине. Может быть Убежденный что-нибудь сможет подсказать.
0
|
19 / 19 / 14
Регистрация: 21.03.2016
Сообщений: 60
|
|||||||||||
29.03.2016, 20:27 | 3 | ||||||||||
Чет не понял, в чем загвостка.
Если под "стандартными методами" не подразумевается вызов GetTickCount:
Если меньше 1 мс, то разность GetTickCount дает 0. Поэтому, лично я, использую циклы, когда надо замерить скорость быстро выполняющегося блока. Если GetTickCount не подходит, то есть специальная инструкция процессоров Intel rdtsc Добавлено через 11 минут UPD: Соррян, я понял, загвостка в том, что система забирает процессорное время. Берешь дизассемблированный листинг, идешь и смотришь количество тактов процессора и умножаешь на его частоту. Пример для кода Выше.
А так это слишком обширное понятие. Смысл считать скорость выполнения кода теоретическую, если на реальной машине это все будет зависит от огромного количества факторов? Для этого существует оценка сложности алгоритмов
0
|
0 / 0 / 0
Регистрация: 14.11.2014
Сообщений: 11
|
|
30.03.2016, 23:12 [ТС] | 4 |
Спасибо за ответ.
0
|
322 / 170 / 24
Регистрация: 25.03.2012
Сообщений: 712
|
|
31.03.2016, 02:22 | 5 |
Это всё сильно зависит от а). операционной системы и б). от выбранной дисциплины планирования (если в этой системе еёможно менять).
Для дисциплин планирования так называемых "реального времени" (FIFO, RR, sporadic, adaptive) процесс с несколько завышенным приоритетом вообще никогда не будет вытесняться. Та что выполнение участка кода с достаточной достоверностью можно выполнять по "зарубкам" времени начала и конца. А для высокой точности есть независимый счётчик тактов процессорной частоты и ассемблерная инструкция RDTSC для считывания числа тактов с момента рестарта процессора (можно измерять временные интервалы в наносекундном диапазоне).
0
|
Вездепух
12798 / 6674 / 1796
Регистрация: 18.10.2014
Сообщений: 16,894
|
|
02.04.2016, 23:50 | 6 |
Вы шутите? На современной архитектуре c конвейерным выполением инструкций и с out-of-order выполнением сидеть и складывать такты из справочника - занятие соврешенно бессмысленное. И это не говоря уже о том, что производлительность вашего кода будет сильно зависеть от его работы с процессорным кэшем и от успешности предсказания условных переходов.
0
|
128 / 126 / 60
Регистрация: 22.01.2014
Сообщений: 464
|
|
04.04.2016, 22:39 | 7 |
Почитал я тут ответы, может я чего-то не понял.
Может профилирование надо? Не, не подходит? Профилирование служит как для определения затрат времени на разных участках хода. А также для определения какие функции вообще не используется в работе программы. Для чтобы использовать профилирование, необходимо собрать приложение особым образом( В GCC используется опция -pg ). И особым образом запустить, а потом можно будет исследовать сгенерированый отчет. Даю пару ссылок: http://www.ibm.com/developerwo... l-gnuprof/ http://ccfit.nsu.ru/arom/data/... ng_txt.pdf
0
|
04.04.2016, 22:39 | |
04.04.2016, 22:39 | |
Помогаю со студенческими работами здесь
7
Можно ли измерить время работы участка кода в тактах процессора? Замер времени Измерение времени работы кода Осуществить замер времени for и while Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |