![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| df_3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 19.5.2003 Репутация: нет Всего: 1 |
Мне надо замерить время сортировки массива подскажите плз какие функции в С позволяют решить эту проблему?
-------------------- ИЗ ВСЕХ ВОЗМОЖНОСТЕЙ НА ЗЕМЛЕ САМАЯ ЯРКАЯ - ЭТО ЖИЗНЬ! |
|||
|
||||
| dargaard |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 450 Регистрация: 7.5.2004 Репутация: 4 Всего: 25 |
#include <time.h>
int main () { clock_t t1,t2; Double T; t1 = clock (); my_proc(); t2 = clock(); T= ((double)(t2-t1))/CLOCKS_PER_SEC; } Po krainei mere tak pod linuxom. Это сообщение отредактировал(а) dargaard - 12.5.2004, 01:31 -------------------- Ты должна сделать добро из зла потому что его больше не из чего сделать. Р.П.Уоррен |
|||
|
||||
| chipset |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 165 |
перед сортировкой получаешь время функцией time(NULL)(из того же <time.h>)
после сортировки тоже получаешь время, разницу отнимаешьь..... время в секундах Добавлено @ 01:37 тьфу чего я сказал получаешь разницу имелось в виду --------------------
|
|||
|
||||
| dargaard |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 450 Регистрация: 7.5.2004 Репутация: 4 Всего: 25 |
---------------------------------------------
time() returns the time since the Epoch (00:00:00 UTC, January 1, 1970), measured in seconds. The clock() function returns an approximation of processor time used by the program. ------------------------------------------ clock () luchshe - tak kak time() budet zaviset' ot zagruzhenosti systemi na moment opredelenia time ()'a , a clock () dast realnoe vremia zatrachennoe processorom na rabotu. izvinaius za translit. -------------------- Ты должна сделать добро из зла потому что его больше не из чего сделать. Р.П.Уоррен |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
GetTickCount() есть такая WinAPI-шная функция - выдаёт в миллисекундах. Если надо ещё точнее - тут была такая тема, воспользуйтесь поиском.
-------------------- ![]() |
|||
|
||||
| 46&two |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 6.2.2004 Репутация: нет Всего: нет |
||||
|
||||
| bel_nikita |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Эксперт Сообщений: 2304 Регистрация: 12.10.2003 Где: Поезд №21/22 ( ст . Прага ) Репутация: 21 Всего: 47 |
Не знаю
|
|||
|
||||
| df_3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 19.5.2003 Репутация: нет Всего: 1 |
пишет ноль в итоге даже на 10000 элементах! -------------------- ИЗ ВСЕХ ВОЗМОЖНОСТЕЙ НА ЗЕМЛЕ САМАЯ ЯРКАЯ - ЭТО ЖИЗНЬ! |
|||
|
||||
| dargaard |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 450 Регистрация: 7.5.2004 Репутация: 4 Всего: 25 |
а почему printf(.. Elapsed_Time) а не просто Time?
time ./a.out 0.460000 0.460u 0.000s 0:00.72 63.8% 0+0k 0+0io 93pf+0w Обычно при таких проверках времени работы все дело еще прокручивают несколько раз - например в твоем случае
Заметь что обязательно также ручками кастить (t2-t1) в double - в противном случае результат будет 0.000000 -------------------- Ты должна сделать добро из зла потому что его больше не из чего сделать. Р.П.Уоррен |
||||
|
|||||
| df_3 |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 19.5.2003 Репутация: нет Всего: 1 |
а я вот так сделал и всё работает
а вот так не работает
А зачем несколько раз прокручивать цикл? Это сообщение отредактировал(а) df_3 - 12.5.2004, 21:33 -------------------- ИЗ ВСЕХ ВОЗМОЖНОСТЕЙ НА ЗЕМЛЕ САМАЯ ЯРКАЯ - ЭТО ЖИЗНЬ! |
||||||
|
|||||||
| dargaard |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 450 Регистрация: 7.5.2004 Репутация: 4 Всего: 25 |
Ну поздравляю что работает - а цикл прокручивать столько раз для получения более точного результата. Чем больше раз проведены измерения тем меньше в принципе погрешность. При этом можно еще высчитать время затраченное на сам цикл и отнять от конучного результата - но там разница будет небольшой.
А так к примеру вот результаты работы простой проги (время затраченное ) REPEAT = 1 прогон 1 - 0.480000 прогон 2 - 0.440000 прогон 3 - 0.460000 прогон 4 - 0.490000 прогон 5 - 0.450000 Теперь прогонаем все тоже но с REPEAT 10 0.470000 Увеличивая REPEAT до 100 получим прогон 1) 0.472800 прогон 2) 0.469900 прогон 3) 0.473000 Как видиш чем больше прогонов тем точность возрастает На данном этапе можно почти смело сказать что прога в среднем работает за 0.47 секунды Конечно все это нафиг не надо если просто делаешь для себя и погрешность роли не играет, ну а когда надо убедить заказчика во времени работы функции то метод не так уж и плох по моему -------------------- Ты должна сделать добро из зла потому что его больше не из чего сделать. Р.П.Уоррен |
|||
|
||||
| AndyY |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 316 Регистрация: 8.5.2004 Где: СПб Репутация: 2 Всего: 4 |
||||
|
||||
| df_3 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 256 Регистрация: 19.5.2003 Репутация: нет Всего: 1 |
Спасибо всем!
-------------------- ИЗ ВСЕХ ВОЗМОЖНОСТЕЙ НА ЗЕМЛЕ САМАЯ ЯРКАЯ - ЭТО ЖИЗНЬ! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |