> 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
