Is this less overhead than the jmf form?

In your example, every case where I want to operate on a file or an object
within the file requires translation through the 3!:2 operator.

Maybe it is functionally the same as the map_jmf_ function, or am I
thinking about this incorrectly?
Or can you please explain the difference.

Thx


Ak











On Thu., Feb. 2, 2023, 15:43 Don Guinn, <dongu...@gmail.com> wrote:

> 'testfile.txt' fwrite~3!:1 'Hello World!';(i.3 4);<2 1$'Text Here';1 2 3 4
>  456
>
> 3!:2 fread 'testfile.txt'
>
> ┌────────────┬─────────┬───────────┐
>
> │Hello World!│0 1 2 3│┌─────────┐│
>
> │ │4 5 6 7││Text Here││
>
> │ │8 9 10 11│├─────────┤│
>
> │ │ ││1 2 3 4 ││
>
> │ │ │└─────────┘│
>
> └────────────┴─────────┴───────────┘
>
> On Thu, Feb 2, 2023 at 2:19 PM Ak O <akin...@gmail.com> wrote:
>
> > 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, <bbill....@gmail.com> 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 <akin...@gmail.com> 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, <
> > > > programm...@jsoftware.com> 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
> >
> ----------------------------------------------------------------------
> 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