I am impressed.

Thank you, Roger.

2006/8/25, Roger Hui <[EMAIL PROTECTED]>:
There is a faster, shorter, and easier to understand
alternative:
  <: #/.~ B,A
that is, preface with the universe of interest,
calculate the counts, and decrement the counts due
to the universe being tacked on.

datai=: 3 : 0  NB. integer test data
 N=: y
 B=: 100+ i.N*10
 A1=: 100+ ?.2 8$&(N&*)10
 A2=: ,A1
 i.0 0
)

datas=: 3 : 0  NB. boxed strings test data
 N=: y
 B=:  <@":"0] 100+ i.N*10
 A1=: <@":"0] 100+ ?.2 8$&(N&*)10
 A2=: ,A1
 i.0 0
)

  datai 100  NB. integers
  ts '((B e. ~.) #^:_1 #/.~)@/:~"1 A1'
0.0152793 1.07571e6
  ts '<: #/.~"1 B,"1 A1'
0.0121803 4.19603e6
  ts '((B e. ~.) #^:_1 #/.~)@/:~"1 A2'
0.00672655 1.06342e6
  ts '<: #/.~"1 B,"1 A2'
0.00321549 1.0585e6

  datas 50   NB. boxed strings
  ts '((B e. ~.) #^:_1 #/.~)@/:~"1 A1'
0.0653997 280064
  ts '<: #/.~"1 B,"1 A1'
0.0190351 1.0503e6
  ts '((B e. ~.) #^:_1 #/.~)@/:~"1 A2'
0.154324 1.47712e6
  ts '<: #/.~"1 B,"1 A2'
0.0174768 1.05024e6

Regarding the comment:
> Remarkably strings are 10-100 times slower
> than integers, but report the same time for
> almost all the tests.

The remarkable thing is that integers are 10-100
times faster than boxed strings.  Integers have
properties that are absent from boxed strings (and
other data), and the special properties are being
exploited for more efficient computation.



----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to