Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.04;
Скачать: CL | DM;

Вниз

Что быстрее?   Найти похожие ветки 

 
Dmk ©   (2004-03-14 18:59) [0]

1. mov     al, [eax]
  and     eax, $000000FF

или    

2. movzx   al, byte ptr [eax]

?

Если есть у кого-нибудь информация
по кол-ву тактов на инструкцию, поделитесь плз.


 
Dmk ©   (2004-03-14 19:02) [1]

Извиняюсь
2. movzx eax, byte ptr [eax]


 
VMcL ©   (2004-03-14 19:22) [2]

http://www.intel.com/
http://www.amd.com/
...


 
Dmk ©   (2004-03-14 19:35) [3]

У меня есть преподробнейшее описание инструкций, но там
не указано кол-во тактов.


 
wl ©   (2004-03-14 22:03) [4]

количество тактов у процессоров (разных фирм и поколений одной фирмы) для некой операции различное, что связано с непрерывным совершенствованием технологии, так что опираться на какой-либо конкретный процессор опасно, но чтобы проверить, можно в цикле выполнить обе эти операции раз  так миллион, и сравнить время выпонления.


 
Gero ©   (2004-03-14 22:26) [5]

> выполнить обе эти операции раз  так миллион

Скорее, миллиард.


 
DiamondShark ©   (2004-03-14 22:40) [6]


> > выполнить обе эти операции раз  так миллион
>
> Скорее, миллиард.

И не в многозадачной среде.


 
wl ©   (2004-03-14 22:45) [7]

но мне кажется всё-таки, что обе они работают одинаково медленно, потому что идёт переключение разрядности регистров (al - eax), что если мне не изменяет память, кроме всего прочего, не позволяет выполняться операции параллельно в конвейере, и требуется несколько циклов на переключение этой самой разрядности. если я не прав, то заранее извиняюсь, документацию по процессорам и профайлингу давно не читал.


 
Dmk ©   (2004-03-14 23:11) [8]

Нарыл я документацию по тактам, но для 486 машин.
Судя по ней операции movzx занимает 3 такта, а
mov и and по 1 такту.
Остается только верить =).
Спасибо всем за внимание.


 
Defunct ©   (2004-03-15 08:28) [9]

Быстрее будет:

MovZX AL, Byte Ptr [EAX]

Быстрее, и занимает меньше памяти

Dmk ©   (14.03.04 23:11) [8]
Не забывайте о тактах, которые требуются для выборки команды


 
MBo ©   (2004-03-15 08:34) [10]

>Dmk
movzx быстрее (экспериментировал в статье "Поставить точку")


 
evvcom   (2004-03-15 09:08) [11]

Я думаю, боле-менее для "простых" команд можно ориентироваться по длине команды в байтах. Ведь выборка команды из памяти практически всегда отнимает у процессора гораздо больше времени, чем выполнение самой команды. Мне кажется, что это справедливо и для кеша. Хотя не спорю, может я и ошибаюсь. Исходя из длины команды:
 mov al, [eax] // 2 байта
 and eax, $FF  // 5 байтов
 // Итого 7 байт
 movzx eax, byte ptr [eax] // всего 3 байта
И второй довод. Если бы на таких командах как movzx ничего бы не выигрывали, был бы смысл их вводить конструкторам?



Страницы: 1 вся ветка

Текущий архив: 2004.04.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
6-1075022161
C@es@r
2004-01-25 12:16
2004.04.04
Проблемы многопоточности


1-1079253255
Новичек
2004-03-14 11:34
2004.04.04
Процедура обработки события.


4-1074912216
Reals
2004-01-24 05:43
2004.04.04
Узнать выделенный текст в чужом окне.


1-1079077976
Fame
2004-03-12 10:52
2004.04.04
Вывод строк БЕЗ незначащих пробелов.


14-1078905227
SPeller
2004-03-10 10:53
2004.04.04
Теперь и я...