*UNFINISHED* 13.07.1996 Mika Heiskanen mheiskan@delta.hut.fi System RPL Timings ================== Objects ======= ZERO 0.391 # 0 0.622 %0 0.382 % 0 0.655 %%0 0.382 %% 0 0.651 C%1 0.390 C% 1 0 0.687 C%%1 0.389 C%% 1 0 0.677 CHR_A 0.389 CHR A 0.633 NULL$ 0.390 " " 0.724 NULLHXS 0.388 HXS 1 0 0.725 NULL:: 3.212 :: ; 2.679 NULL{} 0.389 { } 2.081 { 1 } 2.597 +0.51 for each { 1 2 } 3.105 { 1 2 3 } 3.626 { 1 2 3 4 } 4.134 { 1 2 3 4 5 } 4.653 In reality the executed opcodes for all the entries on the left hand side (except for NULL::) are identical, but the addresses involved are different - %0 and %%0 are at even addresses. Binary Integers =============== ZERO 0.390 # 0 0.630 ZEROZERO 1.204 ONEONE 1.746 #ZERO#ONE 1.183 #ONE#27 1.250 ZEROZEROZERO 2.562 #TWO#ONE 1.247 ZEROZEROONE 2.561 #TWO#TWO 1.223 ZEROZEROTWO 2.558 #TWO#FOUR 1.246 #ZERO#SEVEN 1.224 #THREE#FOUR 1.246 #FIVE#FOUR 1.751 DROPZERO 0.346 ZEROSWAP 1.981 DROPONE 0.404 ZEROOVER 1.850 2DROP00 0.527 ZEROFALSE 1.732 DUPZERO 1.818 ONESWAP 1.977 DUPONE 1.818 ONEFALSE 1.735 DUPTWO 1.817 SWAPONE 1.981 Binary Integer Conversion ========================= Pushing a system binary >43 always causes a jump of 4.68 ticks in timings since the result is no longer optimized by PUSH# to be a ROM pointer. #>HXS 8.785 HXS># 3.770 #>CHR 7.477 #>$ 10.264-21.071 CHR># 2.688 #:>$ 10.531-21.331 COERCE 2.956 for x<0 COERCE 2.995 for x=0 COERCE 15.532 for x=1048575 COERCE 7.885 for x>>1048575 UNCOERCE 7.674 for x=0 UNCOERCE 14.348 for x=1048575 COERCE2 10.030-35.979 COERCEDUP 4.374-16.935 UNCOERCE2 17.538-31.061 COERCESWAP 4.535-17.091 Binary Integer Testing ====================== TRUE FALSE #= 1.059 1.036 #+ 3.107 #* >=4.013 #0= 0.702 0.677 #- 3.158 #/ >=7.163 #1= 1.230 1.178 #1+ 2.725 #2* 2.726 #2= 1.341 1.285 #1- 2.721 #2/ 2.805 #3= 1.323 1.269 #2+ 2.749 #6* 2.970 #5= 2.423 2.401 #2- 2.745 #8* 2.945 #<> 1.051 1.031 #3+ 3.036 #10* 2.967 #0<> 0.708 0.684 #3- 3.037 #1<> 1.220 1.210 #4+ 3.033 #2<> 2.420 2.398 #4- 3.037 #< 1.054 1.030 #5+ 3.038 #> 1.058 1.035 #5- 3.037 #>1 2.431 2.401 #6+ 3.035 #<3 2.422 2.399 #6- 2.987 2DUP#= 3.059 3.055 #7+ 3.036 2DUP#< 3.060 3.099 #8+ 3.042 #-+1 3.356 2DUP#> 3.056 3.100 #9+ 3.043 #1-- 3.357 DUP#0= 1.041 0.987 #10+ 3.038 #+-1 3.403 DUP#1= 1.120 1.067 #12+ 3.037 #-#2/ 3.476 DUP#0<> 1.044 1.025 #+DUP 5.540 DROP#1- 3.956 #+OVER 4.562 DUP#1+ 3.029 #+SWAP 4.699 DUP#1- 3.084 #-DUP 5.582 DUP#2+ 2.896 #-OVER 4.616 DUP3PICK#+ 4.671 #-SWAP 4.746 OVER#+ 4.567 #1+DUP 5.229 OVER#- 4.610 #1+ROT 4.435 ROT#+ 4.823 #1+SWAP 4.324 ROT#+SWAP 5.436 #1-1SWAP 4.700 ROT#- 4.869 #1-DUP 5.220 ROT#1+ 4.436 #1-ROT 4.436 ROT#1+UNROT 0.975 #1-UNROT 4.498 SWAP#- 3.424 2DUP#+ 4.669 SWAP#1+ 3.085 3PICK#+ 4.618 SWAP#1+SWAP 4.677 4PICK#+ 4.642 SWAP#1- 4.318 4PICK#+SWAP 5.251 SWAP#1-SWAP 5.896 SWAPOVER#- 4.878 Character Strings ================= NULL$ 0.390 CAR$ 7.371 NULL$SWAP 1.982 SUB$1# 3.237 NULL$TEMP 9.930 CDR$ DROPNULL$ 0.338 SUB$ NULL$? 0.675 >H$ DUPNULL$? 2.104 >T$ LEN$ 2.777 &$ DUPLEN$ 2.923 OVERLEN$ 2.829 Hex Strings =========== Real & Complex Number Conversion ================================ Pushing a real number different from -9,-8,...0...,8,9 increases execution time by 5.8 ticks. %%>% 3.683 %>%% 3.595 %>%%SWAP 5.193 2%>%% 11.347 2%%>% 9.583 %>C% SWAP%>C% %%>C% Re>C% C%>% C%>%% C%>%%SWAP C>Re% C>Im% C%%>C% C%%>%% Real & Complex Number Testing ============================= Real & Complex Functions ======================== %+ >=6.508 %- >=6.655 Composite Objects ================= Meta Operations =============== Meta & Object Operations ======================== Symbolics ========= Library & Backup Objects ======================== Stack Operations ================ 2DROP 0.284 OVER 0.482 2DUP 0.579 OVER5PICK 2.039 2DUP5ROLL 2.690 OVERDUP 1.905 2DUPSWAP 0.934 OVERSWAP 2.067 2OVER 2.073 OVERUNROT 2.067 2SWAP 0.836 ROT 0.729 3PICK3PICK 2.026 ROT2DROP 0.543 3PICKOVER 1.982 ROT2DUP 2.299 3PICKSWAP 2.114 ROTDROP 0.578 4PICKOVER 2.005 ROTDROPSWAP 0.502 4PICKSWAP 2.134 ROTDUP 1.006 4ROLLDROP 0.593 ROTOVER 2.188 4ROLLOVER 2.297 ROTROT2DROP 0.512 4ROLLROT 2.562 ROTSWAP 0.667 4ROLLSWAP 2.434 SWAP 0.615 4UNROLL3DROP 0.532 SWAP2DUP 2.163 4UNROLLDUP 2.213 SWAP3PICK 2.120 4UNROLLROT 2.507 SWAP4PICK 2.137 DROP 0.261 SWAP4ROLL 2.436 DROPDUP 0.505 SWAPDROP 0.488 DROPOVER 1.717 SWAPDROPDUP 0.434 DROPROT 1.963 SWAPDROPSWAP 0.698 DROPSWAP 0.704 SWAPDUP 0.830 DROPSWAPDROP 0.543 SWAPOVER 0.751 DUP 0.449 SWAPROT 0.668 DUP3PICK 0.933 UNROT 0.797 DUP4UNROLL 1.196 UNROT2DROP 0.512 DUPDUP 1.867 UNROTDROP 0.697 DUPROT 2.159 UNROTDUP 2.198 DUPUNROT 0.751 UNROTOVER 2.235 UNROTSWAP 0.668 UNROTSWAPDRO 0.502 DROP 0.261 2DROP 0.284 OVER 0.482 SWAP 0.615 SWAP 0.615 3DROP 0.360 3PICK 0.529 ROT 0.729 UNROT 0.797 4DROP 0.357 4PICK 0.552 4ROLL 0.849 4UNROLL 0.795 5DROP 0.503 5PICK 0.581 5ROLL 1.121 5UNROLL 1.076 6DROP 0.527 6PICK 0.581 6ROLL 1.239 6UNROLL 1.264 7DROP 0.502 7PICK 0.611 7ROLL 1.339 7UNROLL 3.655 8PICK 0.638 8ROLL 1.693 8UNROLL 3.987 10UNROL 4.111 NDROP 0.806 PICK 0.870 (0) ROLL 0.671 (0) UNROLL 0.673 (1) ROLL 0.715 (1) UNROLL 0.712 (2) ROLL 1.673 (2) UNROLL 1.161 (3) ROLL 1.716 (3) UNROLL 1.730 (4) ROLL 1.790 (4) UNROLL 1.782 (5) ROLL 2.142 (5) UNROLL 2.183 (10) ROLL 2.761 (10) UNROLL 2.748 (50) ROLL 9.123 (50) UNROLL 9.118 (100) ROLL 16.694 (100) UNROLL 16.689 (1000) ROLL 156.692 (1000) UNROLL 156.718 Flags ===== TRUE 0.367 DROPTRUE 0.403 FALSE 0.369 DROPFALSE 0.397 FalseTrue 1.711 2DROPFALSE 1.624 TrueFalse 1.708 SWAPTRUE 1.955 TrueTrue 1.706 SWAPDROPTRUE 1.836 FalseFalse 1.711 XYZ>ZTRUE 1.849 failed 1.712 Runstream Control ================= NOP 0.256 'NOP 1.823 ' >=0.592 RSWAP 0.820 Definite Loops ============== DO LOOP >=23.421 ZERO_DO LOOP >=23.097 ONE_DO LOOP >=23.103 #1+_ONE_DO LOOP >=23.147 Indefinite Loops ================ BEGIN AGAIN 1.130 BEGIN UNTIL 1.130 BEGIN NOT_UNTIL 2.964 Temporary Variables and Environments ==================================== 1GETLAM 0.739 2GETLAM 0.805 3GETLAM 0.828 4GETLAM 0.839 GETLAM 0.851 N>=4 PUTLAM 0.878 N>=1 DOBIND ABND >=16.329 CACHE ABND >=16.567 Variables and Directories ========================= Display ======= CLEARVDISP 37.219 CLEARLCD 37.548 BlankDA1 75.274 Clr16 91.428 BlankDA2 163.058 Clr8 64.335 BlankDA12 215.778 Clr8-15 68.128 BlankDA2a 178.052 CLCD10 31.216 DISPROW 22.749-131.541 BIGDISPROW 28.947-150.899 Grobs ===== Time ==== Miscellaneous ============= *UNFINISHED*