Is this C code portable? Will it run on Window and Mac?
You need to compile C sources for each supported platform,
etc, etc.

Also interesting, what is time time comparison of these
C or J solutions with grep? Since it's a trivial task.


> From: Robert Cyr <[EMAIL PROTECTED]>
> 
> Roger Hui wrote:
> >I would be interested to see the C routine.  J Forum msgs
> >do not seem to permit attachments, so you may have to
> >post the code in a J wiki page.
> 
> I may not have write permission in J wiki pages.  It may be of interest to
> some that:
> 
>    - J code extracts its IPs in 5 lines. I read un a bit on mapped files and
>    ti took about 1/2 hour to write the code.  It executes in 0.67 seconds 
> after
>    loading J.
>    - C code was writen as an exercise in 6-8 hours including a revision.  It
>    was cleanly written in 150 lines and  executes in 0.35 secondss.
> 
> The author of this C code had studied languages as ML before, but my
> demonstration did not persuade him to give J a try.
> 
> 
> On Fri, Oct 3, 2008 at 6:41 PM, Dan Bron wrote:
> 
> > Robert wrote:
> > > The difference is not dramatic
> >
> > Interesting, it was in my tests.  However, the speedup is more a function
> > of the number of IPs (i.e. matches found by  'rhost=
> > '&E.  ) than the total size of the file, and obviously my test data differs
> > from yours.
> >
> > > I need to ignore all characters from the first blank
> > > on each IP address, in case the IP is shorter than 14
> > > characters and is followed by something else.
> >
> > Ah, of course.  Didn't think of that.  Given this constraint, I believe the
> > majority of the time is going to be spent in trimming
> > and reassembling this array.  (Again, provided your list of IPs is large.)
> >
> > One potential optimization would avoid trimming the large list of IPs.
> >  Take the nub of the "dirty list", then trim, then nub
> > again.  Trimming and reassembling this (presumably) smaller array might
> > save you more than the cost of the second nub.
> >
> > Another potential optimization (which again improves with the size of the
> > IP list) is to avoid manifesting the entire addition
> > table.  Instead of
> >
> >        ip        =:  ] {~ I.@:E. +/ '255.255.255.255' (+i.)&#~ [
> >
> > you could try
> >
> >        ip        =:  ] ];.0~ (#'255.255.255.255') ,:"0/~ #@:[ + I.@:E.
> >
> > I haven't tested any of these proposed changes, so they may be broken,
> > buggy, or even slower than the current solution.  And
> > improvements, if any, are likely to be even less dramatic than the first
> > round.
> >
> > Also, I believe your solution currently completes in less than a second,
> > which is not such a burden.  So it might not be worth
> > rewriting, particularly since optimized code tends to be less familiar
> > (hence, less readable/maintainable).
> >
> > The real value of J in this instance is that it's (A) [more than]
> > competitive with the equivalent C code and (B) it was much
> > faster to write (correct?) and very likely easier to change.  The more time
> > spent optimizing, the smaller the benefit of (B).
> >
> > >  to be as efficient as possible in J, then tacit is the way to go
> >
> > Since one of my two optimizations was a non-starter, the entire speedup can
> > be attributed to the replacement of  I. x E. y  with
> > x  I.@:E.  y  .  That construct is supported by special code, and happens
> > to be tacit.  So in this case the efficiencies were a
> > result of using special code, rather than tacit code, per se.
> >
> > -Dan
> >
> > ----------------------------------------------------------------------
> > 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