That was quick! Thanks again. On Mon, Aug 8, 2016 at 7:59 PM, Henry Rich <[email protected]> wrote:
> I have found the problem. I had gone through removing EPILOGs and rat() > operations that twiddled the usecount, needlessly as I thought; but I > misunderstood the logic in one place and got rid of a EPILOG that would > reduce memory use. > > The program did no more work, it just didn't free memory in u@:v until > after the end of u, rather than also at the end of v. > > The next release will have it back the way it was. This will waste time > twiddling the usecount if the result is boxed, but it will free memory more > often. > > We really need to implement nonrecursive usecounts, or avoid EPILOG > processing if there is not much memory to free. > > Henry Rich > > > On 8/8/2016 6:43 PM, Jose Mario Quintana wrote: > >> Thank you Henry. I appreciate it. >> >> On Mon, Aug 8, 2016 at 3:47 PM, Henry Rich <[email protected]> wrote: >> >> I don't think I changed anything in @: or [: . But I did make lots of >>> changes in memory management, and especially in counting the allocated >>> space. I'll look into it. >>> >>> Henry Rich >>> >>> >>> On 8/8/2016 2:32 PM, Jose Mario Quintana wrote: >>> >>> Apparently, the performance of @: vs [: has taken a turn for >>>> the worse under the beta-10 engine. >>>> >>>> One the one hand, this discussion should have been in the Beta forum. >>>> On >>>> the other hand, general performance of programs is entertained; so, it >>>> might belong here as well (alright, alright, I am having difficulty >>>> logging >>>> in to my mail associated to the beta forum, my apologies). >>>> >>>> I was surprised when I was checking out some performance comparison in >>>> the >>>> JWithATwist thread in the Chat forum. First, I noticed that there were a >>>> straw-man verb comparisons of between [: and @ (as opposed to @:). I >>>> guess >>>> that is unfortunately unavoidable because, apparently, most >>>> J programmers use @ by default. In addition, it was not taken >>>> into consideration that forks naturally associate to the right whereas >>>> conjunctions naturally associate to the left. >>>> >>>> However, the under performance of @: vs [: persisted after addressing >>>> these >>>> omissions and an alarm went off in my head! >>>> >>>> First a comparison running J4: >>>> >>>> JVERSION >>>> Engine: j804/j64/windows >>>> Release: commercial/2015-12-21 16:18:48 >>>> Library: 8.04.15 >>>> Qt IDE: 1.4.10/5.4.2 >>>> Platform: Win 64 >>>> Installer: J804 install >>>> InstallPath: j:/program files/j >>>> Contact: www.jsoftware.com >>>> >>>> stp=. ([ ((<;._1 '|Sentence|Space|Time|Space * Time') , (, >>>> */&.:>@:(1 >>>> 2&{))@:(] ; 7!:2@:] ; 6!:2)&>) (10{a.) -.&a:@:(<;._2@,~) ]) ".@:('0 : >>>> 0'"_) >>>> >>>> >>>> stp 1 >>>> ([: - [: - [: - [: - ]) i. 10000000 >>>> (- @: (- @: (- @: (- @: ]))))i. 10000000 >>>> ([: ([: ([: ([: - -) -) -) ])i. 10000000 >>>> (- @: - @: - @: - @: ]) i. 10000000 >>>> (- @ - @ - @ - @ ]) i. 10000000 >>>> ) >>>> ┌────────────────────────────────────────┬─────────┬──────── >>>> ┬────────────┐ >>>> │Sentence │Space │Time │Space * >>>> Time│ >>>> ├────────────────────────────────────────┼─────────┼──────── >>>> ┼────────────┤ >>>> │([: - [: - [: - [: - ]) i. 10000000│402656512│0.178322│7.18024e7 >>>> │ >>>> ├────────────────────────────────────────┼─────────┼──────── >>>> ┼────────────┤ >>>> │(- @: (- @: (- @: (- @: ]))))i. 10000000│402657024│0.178733│7.1968e7 >>>> │ >>>> ├────────────────────────────────────────┼─────────┼──────── >>>> ┼────────────┤ >>>> │([: ([: ([: ([: - -) -) -) ])i. 10000000│671092864│0.185165│1.24263e8 >>>> │ >>>> ├────────────────────────────────────────┼─────────┼──────── >>>> ┼────────────┤ >>>> │(- @: - @: - @: - @: ]) i. 10000000│671092352│0.176141│1.18207e8 >>>> │ >>>> ├────────────────────────────────────────┼─────────┼──────── >>>> ┼────────────┤ >>>> │(- @ - @ - @ - @ ]) i. 10000000│268439936│5.73629 │1.53985e9 >>>> │ >>>> └────────────────────────────────────────┴─────────┴──────── >>>> ┴────────────┘ >>>> >>>> The sentences are performing as I expected in both terms, space and >>>> time. >>>> The corresponding versions of [: and @: have the same performance >>>> whereas >>>> @ >>>> uses less than half of the space but has a (relative) pretty bad time >>>> performance. >>>> Now the same comparison running J5 (the one I was originally using): >>>> >>>> JVERSION >>>> Engine: j805/j64/windows >>>> Beta-10: commercial/2016-08-01T13:13:21 >>>> Library: 8.04.15 >>>> Qt IDE: 1.4.10/5.4.2 >>>> Platform: Win 64 >>>> Installer: J804 install >>>> InstallPath: j:/program files/j >>>> Contact: www.jsoftware.com >>>> >>>> stp=. ([ ((<;._1 '|Sentence|Space|Time|Space * Time') , (, >>>> */&.:>@:(1 >>>> 2&{))@:(] ; 7!:2@:] ; 6!:2)&>) (10{a.) -.&a:@:(<;._2@,~) ]) ".@:('0 : >>>> 0'"_) >>>> >>>> >>>> stp 1 >>>> ([: - [: - [: - [: - ]) i. 10000000 >>>> (- @: (- @: (- @: (- @: ]))))i. 10000000 >>>> ([: ([: ([: ([: - -) -) -) ])i. 10000000 >>>> (- @: - @: - @: - @: ]) i. 10000000 >>>> (- @ - @ - @ - @ ]) i. 10000000 >>>> ) >>>> ┌────────────────────────────────────────┬─────────┬──────── >>>> ┬────────────┐ >>>> │Sentence │Space │Time │Space * >>>> Time│ >>>> ├────────────────────────────────────────┼─────────┼──────── >>>> ┼────────────┤ >>>> │([: - [: - [: - [: - ]) i. 10000000│402656000│0.22633 │9.1133e7 >>>> │ >>>> ├────────────────────────────────────────┼─────────┼──────── >>>> ┼────────────┤ >>>> │(- @: (- @: (- @: (- @: ]))))i. 10000000│671091840│0.168359│1.12985e8 >>>> │ >>>> ├────────────────────────────────────────┼─────────┼──────── >>>> ┼────────────┤ >>>> │([: ([: ([: ([: - -) -) -) ])i. 10000000│671091840│0.177579│1.19172e8 >>>> │ >>>> ├────────────────────────────────────────┼─────────┼──────── >>>> ┼────────────┤ >>>> │(- @: - @: - @: - @: ]) i. 10000000│671091840│0.191088│1.28238e8 >>>> │ >>>> ├────────────────────────────────────────┼─────────┼──────── >>>> ┼────────────┤ >>>> │(- @ - @ - @ - @ ]) i. 10000000│268439296│1.34543 │3.61167e8 >>>> │ >>>> └────────────────────────────────────────┴─────────┴──────── >>>> ┴────────────┘ >>>> >>>> One difference is the much improved time performance of @; that is the >>>> good >>>> news. The other difference is the one related to the second sentence; >>>> the >>>> space use cannot longer match the one of the first sentence. >>>> >>>> Needless to say that if this latter issue implies under performance >>>> under >>>> certain broad conditions and it persists in J5 after the beta then it >>>> will >>>> be a huge disappointment for programmers (such as yours truly) who avoid >>>> [: >>>> like the plague. >>>> ---------------------------------------------------------------------- >>>> 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
