There's also memory limits imposed from outside of J.

For example, there's the `ulimit` unix command, and there can be hard
coded OS limitations (for example on a 32 bit machine, the OS might
limit you to 2GB or 3 GB of memory). And, of course, there's the
amount of memory which you actually have (sometimes with this limit
softened through the use of swap space and virtual memory).

Also... a rough rule of thumb (that works reasonably often) would be
to allow 5 times as much memory for intermediate results (when
compared to what you need for arguments or final results).

--
Raul

On Sat, Feb 4, 2023 at 2:56 AM 'robert therriault' via Programming
<programm...@jsoftware.com> wrote:
>
> The only memory settings that I am aware of are the 9!:20 and 9!:21 foreigns 
> https://www.jsoftware.com/help/dictionary/dx009.htm
>
> Cheers, bob
>
> > On Feb 3, 2023, at 23:47, Ak O <akin...@gmail.com> wrote:
> >
> > On Fri., Feb. 3, 2023, 05:17 Jan-Pieter Jacobs, <janpieter.jac...@gmail.com>
> > wrote:
> >
> >> 3!:2 just gives a representation of the noun. JMF memory-maps a file via
> >> the OS, so you can access the file's content as if it were just normal
> >> memory. It will stay only on disk as long as only in-place methods are used
> >> to change it (doing something like othervar=: +: mapped var will copy it
> >> entirely to memory anyhow). This page
> >> https://code.jsoftware.com/wiki/Mapped_Files and this page (basically the
> >> same as the jmf Lab): https://code.jsoftware.com/wiki/Studio/Mapped_Files
> >> explain how to use JMF, and how it works.
> >>
> >> I think the two mechanisms are entirely different, and both have their
> >> pro's and con's:
> >>
> >> reading data from file and applying 3!:2  is far simpler than JMF, and
> >> allows working with the data faster once read, as the data is copied to
> >> memory. JMF mapped nouns remain on disk, and incur the corresponding
> >> transfer speed penalty.
> >
> > Oh right, size is one factor.
> > How do I determine  where the memory limit is (is this part of the 4gb
> > allocated to the j instance by the operating system)?
> > Can it be increased (or is this only for the jmf domain)?
> >
> >
> >>
> >> On the other hand JMF allows using data that doesn't fit in memory, but
> >> requires care to only apply in-place modification and care not to read more
> >> than fits your memory.
> >>
> >
> > Thx
> >
> > Ak.
> >
> >
> >> On Fri, 3 Feb 2023, 11:04 Ak O, <akin...@gmail.com> wrote:
> >>
> >>> I guess one of my questions directed at how the function works under the
> >>> hood.
> >>>
> >>> Is it that 3!:2 is the mechanism jmf uses to treat the map?
> >>> How do these forms differ?
> >>>
> >>> Ak
> >>>
> >>> On Thu., Feb. 2, 2023, 22:31 Raul Miller, <rauldmil...@gmail.com> wrote:
> >>>
> >>>> You can measure overhead with timespacex
> >>>>
> >>>> Maybe you had already been doing that?
> >>>>
> >>>> --
> >>>> Raul
> >>>>
> >>>> On Thu, Feb 2, 2023 at 11:29 PM Ak O <akin...@gmail.com> wrote:
> >>>>>
> >>>>> 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
> >>>> ----------------------------------------------------------------------
> >>>> 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