IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> Скорость работы с памятью в WinXP
сообщение
Сообщение #1


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Я так понял, что каждое обращение к памяти, встречающееся в программе, долго и упорно обрабатывается системой на предмет залезания не туда, и если действительно было нарушение, вызывается обработчик исключения. Я сделал одну процедуру, у которой основной рабочий цикл (заполнении линии одинаковым, пока что, значением) выглядел так:

// заполнение регистра ecx длиной участка...
jle @@; @:
mov [eax], edx
add eax, 4
// sub eax, 4
dec ecx; jnz @; @@:


Сделал замер скорости. Огорчился.
Решил смеха ради добавить одну паразитную команду (она тут закомментирована). Получил резкое ускорение - то есть теперь данные стали выводиться в одно и то же место в памяти. Видимо система запомнила, куда в последний раз обращалась программа и не стала проверять обращение на корректность лишний раз.
Как на самом деле обрабатываются обращения к памяти в винде? И можно ли использовать эту информацию для ускорения?
Кстати, почему пара deс; jnz работает намного быстрее, чем loop, который специально предназначен для циклов?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
TarasBer   Скорость работы с памятью в WinXP   3.02.2010 0:55
volvo   Во-первых, не факт, что на всех процессорах будет …   3.02.2010 2:05
TarasBer   > Давай сделаем так: приведи простейшую програм…   3.02.2010 2:42
volvo   Вот, посмотри, что у меня получилось: На более ста…   3.02.2010 3:07
Lapp   От типа памяти + кэша должно сильно зависеть. Tar…   3.02.2010 4:16
TarasBer   > TarasBer, давно пора забыть про классическую …   3.02.2010 23:05
volvo   А можно озвучить задачу, которую ты пытаешься реши…   3.02.2010 23:35
TarasBer   В рабочем цикле будет заполняться экранный буфер ц…   3.02.2010 23:48
volvo   То есть, я так понимаю (ключевое слово выделено), …   4.02.2010 2:37
TarasBer   Я не просто так спросил, если что. Я бы не стал за…   6.02.2010 18:19
TarasBer   И да, тогда перенесите тему в ассемблер, пожалуйст…   6.02.2010 18:48
volvo   Ну, и где этот код и результаты его прогонов на ра…   6.02.2010 18:53
TarasBer   Результаты скорости меня интересуют, в первую очер…   6.02.2010 19:42
TarasBer   Попробовал выводить по 8 байт, при помощи команды …   10.02.2010 1:37
SKVOZNJAK   Так в виндовсе память работает в защищённом режиме…   10.02.2010 5:21


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.04.2024 14:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name