Из irc за 21.06
Цитата:
[20:26] [mOleg] мне интересно именно, какова потеря от использования ячейки по сравнению с использованием регистра
[20:26] [Xищник] два цикла памяти
Проверил
Код:
4 ALLOCATE THROW VALUE SSS
: TEST0 A=B B=A ;
: TEST1 [ SSS >CS ] B=# @B=A ;
STARTLOG
METER TEST0
METER TEST1
SEE TEST0
SEE TEST1
лог
Код:
476 14
860 25
CODE TEST0 (5 bytes)
5ABF0F 8BC3 MOV EAX , EBX
5ABF11 8BD8 MOV EBX , EAX
5ABF13 C3 RET NEAR
END-CODE (3 instructions)
CODE TEST1 (9 bytes)
5ABF27 C7C38CA63200 MOV EBX , # 32A68C
5ABF2D 8903 MOV [EBX] , EAX
5ABF2F C3 RET NEAR
END-CODE (3 instructions)
Ok
получается примерно на 40% медленнее, на самом деле разница из-за ошибки
измерения должна быть меньше - где-то 20-30%.
Память надо брать подальше от самого кода - иначе будет несимметрия - на запись в ячейку памяти уйдет
в 5-10 раз больше времени, чем на чтение из нее - из-за переписывания кэша данных.