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