Append-in-place for memory-mapped files should have
resulted in average constant time per append.  That
it did not is a bug which has now been fixed and
the fix will be in an upcoming J6.01b release.

Thank you for finding an reporting this error.



----- Original Message -----
From: John Randall <[EMAIL PROTECTED]>
Date: Wednesday, November 1, 2006 5:50 am
Subject: Re: [Jprogramming] Appending to mapped files

> Roger Hui wrote:
> > Have you tried   f=: f,a  ?  It should be in-place.
> >
> 
> I have tried appending to a jmf file.  Monitoring memory allocation
> suggests that the append is done in place, but timings do not.  I 
> would be
> grateful if anyone could shed some light on this.
> 
> Consider the following script. Each of the verbs testmemory and 
> testjmfrepeatedly appends i.1e4 to an array, and prints an append 
> count and
> the time for the append.
> 
> require 'jmf files'
> 
> testmemory=:3 : 0
> f=:0$0
> for_i. i.y do.
> smoutput i, 6!:2 'f=:f,i.1e4'
> end.
> 0 0$0
> )
> 
> testjmf=:3 : 0
> fn=.jpath '~temp/temp.jmf'
> createjmf_jmf_ fn;4e8
> map_jmf_ 'f';fn
> f=:0$0
> for_i. i.y do.
> smoutput i, 6!:2 'f=:f,i.1e4'
> end.
> unmap_jmf_ 'f'
> ferase fn
> 0 0$0
> )
> 
> The verb testmemory does this in memory.  As expected, the timings
> remain approximately constant over trials.
> 
>   testmemory 10000
> 0 0.000269
> 1 0.000235
> 2 0.000136
> 3 0.000391
> 4 0.000127
> 5 0.00013
> 6 0.000591
> 7 0.000131
> 8 0.000127
> 9 0.00013
> 10 0.000128
> ...........
> 990 0.000154
> 991 0.000146
> 992 0.000149
> 993 0.00016
> 994 0.000144
> 995 0.000148
> 996 0.000149
> 997 0.005005
> 998 0.000173
> 999 0.000149
> 
> The verb testjmf does the appends in a jmf file.  The timings increase
> approximately linearly, giving overall quadratic performance.
> 
>   testjmf 1000
> 0 0.000416
> 1 0.000403
> 2 0.00054
> 3 0.000764
> 4 0.000931
> 5 0.000994
> 6 0.001221
> 7 0.001297
> 8 0.001759
> 9 0.001929
> 10 0.001796
> ............
> 990 0.166764
> 991 0.166541
> 992 0.165332
> 993 0.166796
> 994 0.167025
> 995 0.16505
> 996 0.168694
> 997 0.165894
> 998 0.166543
> 999 0.168175
> 
> I am new to jmf files, so I may be doing something fundamentally
> wrong.  Any insight would be appreciated.


----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to