|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.04.2009, 20:15 | #1 |
Пользователь
Регистрация: 03.04.2009
Сообщений: 59
|
Измерение времени выполнения цикла
Пробовал измерить работу цикла, в котором происходит заполнение массива(достаточно большого размера), после запуска проги возникает следующее сообщение: "An error has occured in your application. If you choose ignore, you should save your work in a new file. If you choose Close, your application will terminate."
после чего пишет: "K1 (название программы - авт.) caused a General Protection Fault in module K1.exe at 0001:0198." в чём проблема? Может я неправильно время измеряю... Вот код: Код:
|
23.04.2009, 22:33 | #2 |
Пользователь
Регистрация: 28.03.2009
Сообщений: 38
|
сейчас закомпилировал борланд цпп биледром- все нормально, все работает..время правда 0 секунд=) ну хотел в секундах-столько же и получишь=)
|
23.04.2009, 22:34 | #3 |
Пользователь
Регистрация: 28.03.2009
Сообщений: 38
|
а вообще смотри RDTSC(ассемблерная комманда- количество тактов процессора с момента его запуска) для измерения таких вещей
|
23.04.2009, 23:12 | #4 |
Пользователь
Регистрация: 03.04.2009
Сообщений: 59
|
работает значит... Странно...
Только вот почему 0 выдаёт, ведь по идее я же создал массив достаточной величины, чтобы время было близкое к секундным измерениям... в любом случае, спасибо А с ассемблеровскими коммандами ещё плохо знаком( |
24.04.2009, 05:34 | #5 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
У меня тоже все работает, но время тоже равно 0. На сколько я понимаю тип time_t - округляет время до 1 секунды. Т.к. в данном случаи время близко к 0, оно округляется до 0.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
24.04.2009, 07:15 | #6 |
Пользователь
Регистрация: 28.03.2009
Сообщений: 38
|
хм...и это- большой массив? увеличь его в тысячу раз..тогда и будет большой массив. а это всего лишь чтото чуть больше мегабайта.
|
24.04.2009, 12:33 | #7 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Это ровно 1 мегабайт (при условии что тип int занимает 4 байта).
И зачем его увеличивать, если нужно именно столько?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
24.04.2009, 15:00 | #8 |
Пользователь
Регистрация: 28.03.2009
Сообщений: 38
|
итак...зачем увеличивать. difftime считает разницу в секундах(см хелп). для примера возьмем мой копм(слабенький ноут). частота процессора 1600000000 Герц. массив размером 262144 чисел типа инт он обработает за 0,00016384 секунды в идеальном случае. и где тут большой массив?
Последний раз редактировалось radiohobbyt; 24.04.2009 в 15:12. |
24.04.2009, 16:39 | #9 |
Software Engineer
Участник клуба
Регистрация: 07.04.2007
Сообщений: 1,618
|
Понятие "большой массив" растяжимое, но уж точно оно не зависит от того, сколько времени потратит ваш комп на его обработку. Мне, например, довольно редко приходилось использовать такие массивы (с размерностью более 200к), поэтому я бы сказал что он большой. Кто-то может каждый день пишет программы с подобными массивами, поэтому для него он вполне обычный.
По поводу difftime - я бы вообще не стал использовать эту функцию для подобной программы. Подробнее можно посмотреть тут http://linux.yaroslavl.ru/docs/prog/libc/libc-6.html
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
|
25.04.2009, 16:21 | #10 |
Пользователь
Регистрация: 03.04.2009
Сообщений: 59
|
Согласен, массив был слишком маленьким. Увеличил в 100 раз - стал выдавать секунду.
Вдогонку ещё вопрос - а как бы реализовать изменение длинны масива. Ну например, считать сперва для 100мб, потом с 500мб потом с 1000.. Я не могу придумать ничего разумнее, чем прописание разных блоков кода для массивов разной длинны. Но тогда код разрастётся до жутких размеров... Намекните как=) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Приостановка выполнения цикла | ACE Valery | Общие вопросы C/C++ | 21 | 19.11.2011 12:40 |
Измерение времени нажатия клавиши клавиатуры | buka_14 | Помощь студентам | 6 | 13.04.2009 13:18 |
Измерение времени в c# | byte916 | Помощь студентам | 4 | 06.03.2009 21:18 |
оптимизация для меньшения времени выполнения | Ganmaker | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 19.11.2008 17:33 |
Приостановка цикла для выполнения внешней программы | Uomo | Общие вопросы Delphi | 3 | 04.04.2008 11:48 |