Обновлённый вариант программы (в чём отличие - Пост 104):
Последние три тесты - это сравнение классического цикла на SOB и команды MOVC (пересылка строки символов) CISКод:.RUN SPEED3 Тест быстродействия R1+R0 classic 531 272 оп./сек R1(23456.)+R0(12345.) empty 165 729 оп./сек R1(23456.)+R0(12345.) 126 598 оп./сек ; 536 172 R1+@R0 classic 331 022 оп./сек R1(23456.)+@R0(M-12345.) empty 165 728 оп./сек R1(23456.)+@R0(M-12345.) 110 531 оп./сек ; 331 867 R0*R0 classic 40 764 оп./сек empty 11.*12. 165 722 оп./сек 11.*12. 32 670 оп./сек ; 40 692 R2/R0 classic 140 979 оп./сек R2-R3(34567.)/R1(321.) empty 126 606 оп./сек R2-R3(34567.)/R1(321.) 20 122 оп./сек ; 23 924 CIS MULPI 1 432 оп./сек CIS MULP 1 empty 57 081 оп./сек CIS MULP 1 459 оп./сек ; 463 CIS MULPI 2 2 005 оп./сек CIS MULP 2 empty 57 078 оп./сек CIS MULP 2 2 459 оп./сек ; 2 570 CIS ADDNI 1 3 145 оп./сек CIS ADDN 1 518 оп./сек CIS ADDNI 2 6 496 оп./сек CIS ADDN 2 2 563 оп./сек MOV 8 word 1 14 503 оп./сек MOV 8 word 2 17 002 оп./сек CIS MOV 8 word 1 14 015 оп./сек .
8 и 9 слов против 4-ых. Надо будет увеличить длину строки с 16-ти символов на побольшеКод:ACTION <<CR><LF>\MOV 8 word 1\> LET R0 := #ABUF01 LET R1 := #ABUF02 THRU R2 := #<ABUF02-ABUF01>/2 LET (R1)+ := (R0)+ END ACTION <<CR><LF>\MOV 8 word 2\> LET R0 := #ABUF01 LET R1 := #ABUF02 THRU R2 := #<ABUF02-ABUF01>/4 LET (R1)+ := (R0)+ LET (R1)+ := (R0)+ END ACTION <<CR><LF>\CIS MOV 8 word 1\> MOVCI MBUF01, MBUF02, SPACE![]()




Ответить с цитированием