Help / Release / J 4.05 / i. and i: Improved
< Help
Jump to navigation
Jump to search
>> << Pri JfC LJ Phr Dic Voc !: Rel NuVoc wd Help Release
i. and i: Improved |
initial writing: 2000-00-00 |
The dyads i. and i: have
been changed to improve their performance on arguments
that have many columns that are identical in value
(for example, aaaaba aaaaxa aaaa2a).
Also, i. and i: previously
had a bug in the handling of floating point arguments
that differ only in the last few significant bits,
resulting in very poor performance. This bug has
now been fixed.
Timing comparisons are as follows:
timer=: 6!:2 c=: a.{~ ?3e4 36$#a. NB. random literal d=: (?#~#c){c s=: a.{~?3e4 2$#a. t=: ($c)$'x' c1=: s (<a:;10 11)}t NB. little-varying literal; same amount of data as c d1=: (?#~#c1){c1 NB. only cols 10,11 can differ in each row i=: (?3e4$65536),"0 1 i.8 NB. little-varying integers; same amount of data as c j=: (?#~#i){i NB. only a few bytes can differ in each row x=: 1.12+ i. n NB. FP with many different bits y=: 1e12+ i. n NB. FP with only trailing bits different
Type | J 4.05 | J 4.04 |
random literal; c i. d | 0.0736780 | 0.0689725 |
little-varying literal; c1 i. d1 | 0.0750378 | 1.64165 |
little-varying integer; i i. j | 0.0881493 | 159.712 |
FP with many different bits; i.~x | ||
1000 | 0.00097554 | 0.00072160 |
2000 | 0.00176000 | 0.00120015 |
4000 | 0.00370522 | 0.00239025 |
8000 | 0.00740289 | 0.00485425 |
16000 | 0.01379169 | 0.01139474 |
FP with only trailing bits different; i.~y | ||
1000 | 0.00084145 | 0.10794414 |
2000 | 0.00252267 | 0.45633776 |
4000 | 0.00383512 | 1.87803872 |
8000 | 0.00697798 | 7.62392158 |
16000 | 0.01491390 | 30.47773014 |