> But there is a difference, and it's reproducible.

The difference is so small that I wouldn't worry about it.  I would not
have posted my msg if I knew that the timings were not reproducible.  I
thought there was a factor of 1.5.



On Fri, Sep 7, 2012 at 6:37 AM, Ian Clark <[email protected]> wrote:

> The point is well-made, Roger.
>
> SP=: ' '
> b2o=: }.@((<SP) ;@,.  ])
> b2q=: }:@((<SP) ;@,.~ ])
>
>    x=: (1e6 ?@$ 20) $&.> 'x'
>    $ b2o x
> 10497510
>
>    timer 'b2o x'
> 0.189877
>    timer 'b2q x'
> 0.189789
>
> Counter-intuitive, when I first saw it. But only to be expected, when
> I thought it through.
>
>    s=: 1e7 $ 'x'
>
>    timer '}. s'
> 0.0148418
>    timer '}: s'
> 0.014695
>
> Dropping a char off the end of a string is apt to be cheaper than
> dropping it off the beginning, because chars will probably need to be
> shifted across word boundaries.
>
> On my Mac there's not a lot of difference in speed (which varies, no
> doubt due to the varying memory chunks available to malloc). But there
> is a difference, and it's reproducible.
>
> On Fri, Sep 7, 2012 at 6:00 AM, Roger Hui <[email protected]>
> wrote:
> >    SP=: ' '
> >    b2o=: }.@((<SP) ;@,.  ])
> >    b2q=: }:@((<SP) ;@,.~ ])
> >
> >    x=: (1e6 ?@$ 20) $&.> 'x'
> >
> >    (b2o -: b2q) x
> > 1
> >
> >    timer 'b2o x'
> > 0.388007
> >    timer 'b2q x'
> > 0.262082
> >
> >
> >
> > On Thu, Sep 6, 2012 at 4:07 PM, Ian Clark <[email protected]> wrote:
> >
> >> Quite right, Raul. And strings containing newlines do matter to me. A
> lot.
> >>
> >> I confess I only threw in bpv as a bit of a joke. It relies on 5!:5
> >> converting boxed z to...
> >> <;._1 ' alpha bravo charlie'
> >> which it doesn't always. In fact, it returns your example without change
> >> ...
> >>
> >>    z123=: '1';'2';'3'
> >>    5!:5 <'z123'
> >> '1';'2';'3'
> >>
> >> So I fear bpv doesn't merit close attention.
> >>
> >> (I suspect ;:inv will eventually let me down too, but I haven't fooled
> it
> >> yet!)
> >>
> >> b2o and its sister b2f do matter, however, as I propose to put serious
> >> weight on them, as g.p. utilities.
> >>
> >> b2o=: }.@((<SP) ;@,. ])
> >> b2f=: }.@((<LF) ;@,. ])
> >>
> >> so I'd be grateful to be notified of anyone making them misbehave.
> >>
> >> Possible gray areas to investigate: use of i{a. where i>127, utf-8,
> >> boxed scalars, strings with CRLF, 0{a. and other subasciis, uses of a:
> >> , etc, etc.
> >>
> >> On Thu, Sep 6, 2012 at 11:43 PM, Raul Miller <[email protected]>
> >> wrote:
> >> > Note that bpv would also have problems with boxed strings containing
> >> > spaces, and even worse problems with boxed strings containing
> >> > newlines.  (It's not clear, though, if strings containing newlines
> >> > matter to you.)
> >> >
> >> > --
> >> > Raul
> >> >
> >> > On Thu, Sep 6, 2012 at 6:39 PM, Ian Clark <[email protected]>
> wrote:
> >> >> Right you are.
> >> >>
> >> >> What I really want (but haven't said) is the fastest versions of b2o
> >> >> (boxed-to-open-string) and b2f (boxed-to-LF-separated-string), where
> >> >> b2f is b2o with ' ' (-:SP) replaced with LF.
> >> >>
> >> >> I think I've got them now, thanks to everyone.
> >> >>
> >> >> BTW solutions involving deb aren't general enough, esp for b2f, where
> >> >> the boxed strings may validly contain multiple spaces.
> >> >>
> >> >> On Thu, Sep 6, 2012 at 11:32 PM, Raul Miller <[email protected]>
> >> wrote:
> >> >>> I prefer
> >> >>>    ;:inv z
> >> >>>
> >> >>> But note that
> >> >>>
> >> >>>   deb,' ',.>z
> >> >>>
> >> >>> would work.  (J6 users need require'strings' before this can work.)
> >> >>>
> >> >>> FYI,
> >> >>>
> >> >>> --
> >> >>> Raul
> >> >>>
> >> >>> On Thu, Sep 6, 2012 at 6:21 PM, Ian Clark <[email protected]>
> >> wrote:
> >> >>>> Yes, but we need a string.
> >> >>>> You can ravel the 2D array to get a string, viz:
> >> >>>>    ,> z
> >> >>>> but it gives you a varying number (0 or more) of separating spaces.
> >> >>>>
> >> >>>> On Thu, Sep 6, 2012 at 10:50 PM, km <[email protected]> wrote:
> >> >>>>>     > 'alpha';'bravo';'charlie'
> >> >>>>>  alpha
> >> >>>>>  bravo
> >> >>>>>  charlie
> >> >>>>>
> >> >>>>> I'm resending because the echo from Jsoftware to my iPad was
> >> incorrect.  Hope this one shows my solution was to open the list of
> boxes.
> >> >>>>>
> >> >>>>> Sent from my iPad
> >> >>>>>
> >> >>>>>
> >> >>>>> On Sep 6, 2012, at 4:32 PM, km <[email protected]> wrote:
> >> >>>>>
> >> >>>>>>> 'alpha';'bravo';'charlie'
> >> >>>>>> alpha
> >> >>>>>> bravo
> >> >>>>>> charlie
> >> >>>>>>
> >> >>>>>> (shape 3 7)
> >> >>>>>>
> >> >>>>>> Sent from my iPad
> >> >>>>>>
> >> >>>>>>
> >> >>>>>> On Sep 6, 2012, at 11:38 AM, Ian Clark <[email protected]>
> >> wrote:
> >> >>>>>>
> >> >>>>>>> Kindergarten class...
> >> >>>>>>>
> >> >>>>>>> I have a list of boxed literals...
> >> >>>>>>>  z=: 'alpha' ; 'bravo' ; 'charlie'
> >> >>>>>>>
> >> >>>>>>> I want to flatten it to a literal, but with spaces between.
> >> (Variant:
> >> >>>>>>> --with LF's).
> >> >>>>>>>
> >> >>>>>>> Raze (;) does indeed flatten the list...
> >> >>>>>>>  ;z
> >> >>>>>>> alphabravocharlie
> >> >>>>>>>
> >> >>>>>>> There's got to be a really neat extended Raze which includes
> >> >>>>>>> separators. But the fastest I've been able to come up with is:
> >> >>>>>>>
> >> >>>>>>>  b2o=: }.@((<' ') ;@,. ])
> >> >>>>>>>  b2o z
> >> >>>>>>> alpha bravo charlie
> >> >>>>>>>
> >> >>>>>>> Any advances?
> >> >>>>>>>
> >> ----------------------------------------------------------------------
> >> >>>>>>> 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