Yes, this does portend some exciting developments  - as an early 
requester/adopter/user of mapped files - this will REALLY speed up my day to 
day work.

Installation was painless - sorry that another of my silly benchmarks is a day 
late for Pi day but here are some timing results

   JVERSION
Engine: j806/j64/linux
Release: commercial/2017-11-06T09:54:01

   2 map_jmf_ 'pi';'/home/jkt/Documents/jstuff/Pi5e9.txt';'';1
   52{.pi
3.14159265358979323846264338327950288419716939937510
   $pi
5000000002
   20{. 4663739955 }. pi     NB. interesting repetitive sequence
28519333333333386780
   ts '20{. 4663739955 }. pi'
0.113672 5.36872e8

   JVERSION
Engine: j807/j64/linux
Beta-c: commercial/2018-03-13T10:30:41

   2 map_jmf_ 'pi';'/home/jkt/Documents/jstuff/Pi5e9.txt';'';1
   ts '20{. 4663739955 }. pi'
5e_6 1344
  NB. Wow! significant/amazing speedup!
   0.113672 5.36872e8 % 5e_6 1344  
22734.4 399458

~~~~

OK silly benchmark, but 22730 times faster and 400000 times less space - NICE!

> On 2018Mar 15, at 08:16, Eric Iverson <[email protected]> wrote:
> 
> The 807 beta-c zip install packages for windows/linux/macos are available.
> 
> This establishes the base for an exciting year.
> 
> The initial step was taken many years ago when the noun header was
> allocated with a pointer to the ravel of its data rather than having to be
> contiguous. This work was done by Roger Hui to facilitate the
> implementation of mapped files (the cornerstone for Jd). We knew at the
> time that this opened up great opportunities.
> 
> Henry's new work means that J can create nouns that use data that already
> exists in another noun. He calls memory that is shared between multiple
> nouns 'virtual'. A second area of work has been to make better use of cache
> memory (cache is much faster than ram).
> 
> This can allow some J expressions to work with less data movement and this
> can significantly improve performance.
> 
> The following is paraphrased from Henry:
> 
> ***
> The only operations currently supported virtually are (x }. y) and (x {. y).
> 
>   ts=: 6!:2, 7!:2@]
>   a =. i. 1e6
>   ts '+/ 1000 {. 2000 }. a'
> 
> On my system 807 is 1000 times faster and takes 4000 times less space!
> 
> Another example is:
> 
>   ts '+/@(1&}. - _1&}.) a'
> 
> The 2.6 times speedup in this second example is instructive.  It saves two
> copies of the argument, but it still has to pass through the argument twice
> to read it, then write the result and read it back to sum.  Why is it so
> much faster, since it seems to save only 1/3 of the memory traffic and
> nothing computationally?  Answer: better cache coherence, because the two
> reads of the subtraction operands are brought into cache at the same time.
> ***
> 
> Probably too early to start using betas for production work, but please
> start now for less critical work. It is stable, but we need your help to
> end up with the best final release possible.

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

Reply via email to