| c}x,y,:z Improved |
initial writing: 2000-00-00 last updated: 2004-10-26 |
b=: ?(5$10)$2
x=: o.?($b)$1000
y=: o.?($b)$1000
z=: o.?($b)$1000
c=: ?($b)$3
ts=: 6!:2 , 7!:2@]
+/,b NB. roughly equal proportions of 1s and 0s
50185
ts 'q=: (x*b)+y*-.b'
0.0279061 3.27834e6
ts 'r=: (b)}y,:x' NB. no special code
0.0570458 6.29325e6
ts 's=: b}y,:x' NB. special code but makes copy
0.0102885 1.05018e6
ts 'y=: b}y,:x' NB. special code, in place
0.00728388 1472
q&-:&> r;s;y
1 1 1
b1=: 0=?(5$10)$390
y=: o.?($b)$1000
+/,b1 NB. many more 0s than 1s
243
ts 'q=: (x*b1)+y*-.b1'
0.0281466 3.27821e6
ts 'r=: (b1)}y,:x' NB. no special code
0.0535643 6.29325e6
ts 's=: b1}y,:x' NB. special code but makes copy
0.00813539 1.05018e6
ts 'y=: b1}y,:x' NB. special code, in place
0.0012672 1600
q&-:&> r;s;y
1 1 1
y=: o.?($b)$1000
ts 'q=: (x*0=c)+(y*1=c)+z*2=c'
0.0600914 5.63834e6
ts 'r=: (c)}x,y,:z' NB. no special code
0.0848446 9.96352e6
ts 's=: c}x,y,:z' NB. special code but makes copy
0.0119311 1.0505e6
q&-:&> r;s
1 1