In this case the data is an array of boxes.
The datatype is 'boxe'd.
The data is of some shape.
These things have to be preserved in order to correctly restore them
later. (at some cost, up-front to specify them, afterwards to recall the
specifics, or something else) It might be easy to write as literal, but
reverting back can present some challenges.
For example:
ary=: 'abcd';4 5 6 7; 2 2 $ 8.9 7.6 .6.5 5.4
datatype ary
boxed
datatype ":ary
literal
***Danger***
$ary NB. An array of structures that preserves operational
intention.
3
$":ary NB. An array whose structure is different than its
operational intention.
4 22
These are different and need to be accounted for.
datatype (>0{ary)
literal
datatype (>1{ary)
Integer
datatype (>2{ary)
floating
Each unit has a shape and a type to preserve.
If I want to operate on this object with the meaning intended for it when
it was created, many errors can be avoided when unnecessary intermediate
conversions are avoided.
Jmf allows you to operate directly without having the need to
revert from literal to your operation/operand, datatype (with the
associated overhead and tracking).I am not saying that there is no overhead
with jmf, just that the cognitive load is offset or preset because jmf
treats it for the user.
(1!2 & 1!:/, fwrite , fread) forms.
1. Convert to literal.
2. Write literal to file.
3. Read literal from file.
4. Convert literal type to operation type
5. Operate with type.
End
___
jmf form.
1. Create jmf file.
2. Map jmf file.
3. Operate with file.
End
I am interested in understanding better how the best performance is
achieved comparing these forms.
Thoughts.
Ak
On Thu., Feb. 2, 2023, 07:51 bill lam, <[email protected]> wrote:
> Using Jmf is overkill. Also what are the advantages of jmf over 3!:1/3!:2
> in this case?
>
> On Thu, 2 Feb 2023 at 7:17 PM Ak O <[email protected]> wrote:
>
> > load 'jmf'
> > NB. Loads jmf facilities.
> >
> > testfile =: {2,\?50#75
> >
> > fn =: jpath 'C:\Users\skip\J904-user\temp\foo\testfile_name.jmf'
> > NB. Links a covername to the file path.
> > createjmf_jmf_ fn;(([:(*&8)#);testfile)
> > NB. Create the container for your file.
> > NB. -fn is your reference name
> > NB. -(([:(*&8)#);testfile) allocates the size of yor fike in bytes
> >
> > map_jmf_ 'testfile_disk';fn
> > NB. Maps the file to a noun 'testfile_disk'
> > ] testfile_disk_jmf_ =: testfile
> >
> > unmap_jmf 'testfile_disk_jmf_'
> > NB. Release mappings
> > Or
> > Exit 0
> > Close session.
> >
> >
> > New session.
> >
> > load 'jmf'
> > fn =: jpath 'C:\Users\skip\J904-user\temp\foo\testfile_name.jmf'
> > map_jmf_ 'testfile1';fn
> > NB. Map file
> > ] testfile1_jmf_
> > NB. File loaded as noun 'testfile1_jmf_'
> >
> > Some potential benefits of the .jmf datatype:
> > -Preserves header and shape information.
> > -If you want to map you file as read only, use the following syntax
> > map_jmf_ 'testfile1';fn;'';1
> > -If you would like it to be copy-on-write use the following syntax
> > map_jmf_ 'testfile1';fn;'';2
> >
> >
> > Ak
> >
> > On Wed., Feb. 1, 2023, 21:48 'Skip Cave' via Programming, <
> > [email protected]> wrote:
> >
> > > I have a boxed noun:
> > >
> > > ] testfile =: {2,\?15#50
> > >
> > >
> > >
> >
> ┌────┬─────┬─────┬─────┬─────┬─────┬────┬────┬────┬────┬─────┬────┬───┬────┐
> > >
> > > │9 21│21 47│47 37│37 13│13 33│33 20│20 4│4 49│49 6│6 25│25 33│33 9│9
> 6│6
> > > 43│
> > >
> > >
> > >
> >
> └────┴─────┴─────┴─────┴─────┴─────┴────┴────┴────┴────┴─────┴────┴───┴────┘
> > >
> > >
> > > I want to store it in the following location on my machine:
> > >
> > >
> > > ]fn =. < 'C:\Users\skip\J904-user\temp'
> > >
> > > ┌────────────────────────────┐
> > >
> > > │C:\Users\skip\J904-user\temp│
> > >
> > > └────────────────────────────┘
> > >
> > > Then I will close that J session.
> > >
> > >
> > > Later, I will start a new J session, and I want to read that saved file
> > > into a noun called 'test1'
> > >
> > >
> > > What is the J code for writing the noun into a file in the first
> session?
> > >
> > > What is the J code to read the file into a noun in the second session?
> > >
> > > Should I use 1!2 & 1!:1, or fwrite & fread, or something else?
> > >
> > >
> > > Where in the J doc are these file operations and their tradeoffs
> > described?
> > >
> > >
> > > Skip
> > >
> > >
> > > Skip Cave
> > > Cave Consulting LLC
> > > ----------------------------------------------------------------------
> > > For information about J forums see http://www.jsoftware.com/forums.htm
> > >
> > ----------------------------------------------------------------------
> > For information about J forums see http://www.jsoftware.com/forums.htm
> >
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
>
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm