|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
21.09.2013, 16:17 | #11 |
Регистрация: 15.09.2013
Сообщений: 8
|
Если используешь циклы, то будут срабатывать лишние прерывания, что может сказаться на скорости и нести кучу ошибок. Не знаю, сколько производительности отнимут команды CLI-STI, но всяко меньше. Кстати, в защищенном режиме их использование в вечном цикле просто незаменимо.
|
22.09.2013, 15:42 | #12 |
Форумчанин
Регистрация: 19.11.2011
Сообщений: 198
|
Как же я время засекать буду, если все прерывания отключу?
Я планирую 2 цикла сделать: первый - основной, который содержит саму команду, второй - пустой,точно такой же но без этой команды. Засекаю время выполнения обеих циклов и отнимаю от первого второй |
23.09.2013, 09:31 | #13 |
Регистрация: 15.09.2013
Сообщений: 8
|
Тогда не проще использовать мой самый первый способ? У него точность будет гораздо больше. Команды сдвигов регистров работают очень быстро. 10 000 строк рода mov eax,ebx исполняются практически мгновенно, а такие циклы (как loop) исполняются ограниченное количество раз.
|
23.09.2013, 10:50 | #14 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,834
|
Сначала я честно пытался понять в ассемблерном отладчике, как работает QueryPerformanceFrequency в Windows. Оказалось, что в нем используются SYSENTER и LEAVE, которые, по всей видимости, обращаются к объектам ядра, поэтому ничего понять не удалось.
А сегодня на свежую голову вспомнил, что код реализации QueryPerformanceCounter и QueryPerformanceFrequency под DOS должен быть в HX DOS Extender. И правда, нашел у себя в локальной копии в файле qperfcnt.asm. Так что могу предложить скачать исходники HX и разобраться.
В разработке: воспроизводственный контур ИТ
|
25.09.2013, 11:02 | #15 |
Регистрация: 15.09.2013
Сообщений: 8
|
Кстати, я чисто из эксперимента написал код примерно в 20 000 строк рода
"mov eax, ebx mov ebx, eax" и в конец добавил нечто вроде хелоуворда. На моем компьютере процессор Celeron 2,6 Ghz, скомпилировал этот код и запустил Com-файл в DOSBOX. К удивлению, на довольно таки старом процессоре, приложение выполнилось мгновенно. Под чистым досом это тоже выполнилось мгновенно. Как показала практика, реализовать программную задержку на современных процессорах не так то просто. |
25.09.2013, 11:44 | #16 | ||
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
Цитата:
Цитата:
Правильно поставленная задача - три четверти решения.
Последний раз редактировалось DiemonStar; 25.09.2013 в 11:47. |
||
25.09.2013, 15:24 | #17 |
Регистрация: 15.09.2013
Сообщений: 8
|
Я когда был ламером, недооценивал мощность компьютеров и пытался экономить на каждой подобной команде. Выводы делал как и большинство школьников, обвиняя именно компьютер. Хотя как оказалось, вина именно в программном обеспечении, в частности, в винде. Ибо это была нелепая куча не оптимизированного быдлокода на и без того деревянного C++.
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
cmd. частично не работает отключение вывода результата выполнения команды | goluzov | Общие вопросы C/C++ | 1 | 06.12.2012 12:10 |
Время выполнения команды на С | nastya2112 | Общие вопросы C/C++ | 4 | 06.11.2012 11:48 |
Оценка среднего времени выполнения команды(на просто С) | nastya2112 | Помощь студентам | 0 | 06.11.2012 11:21 |
Вложенный вызов обработчика ( проще - дублирование выполнения команды) | DeKot | Общие вопросы Delphi | 2 | 08.01.2012 22:11 |