Meanwhile

http://users.ece.utexas.edu/~adnan/pike.html

;)

Thanks,

-- 
Raul


On Tue, Aug 26, 2014 at 12:42 AM, 'Pascal Jasmin' via Programming <
[email protected]> wrote:

> to expand on what you are saying,
>
>    timespacex '+/`0:@.([: +./ 0 = ]) 0,~ >: i.1e5'
> 0.00329024 3.28512e6
>    timespacex '+`0:@.(0 = *)/ 0,~ >: i.1e5'
>
> 0.0532716 2.10253e6
>
> the first expression sees if any item is 0, and if not, it does +/ else it
> returns 0.  It is 20 times faster than 2nd expression which checks if
> either x or y is 0 and then returns 0
>
> There is unfornately no tacit break, but generating an error can let you
> call the error handler.  You could look at the addler32 thread for trying
> to get an intermediate value of the function up until the error, but:
>
>    (+`(a:+])@.(0 = *))/ :: 0:   1 4 0 3 2 1
> 0
>
>    timespacex ' (+`(a:+])@.(0 = *))/ :: 0: 0 ,~ >: i.1e5'
> 0.0021792 3.15366e6
>    timespacex ' (+`(a:+])@.(0 = *))/ :: 0: 0 , >: i.1e5'
> 0.0480169 3.15366e6
>
> it turns out that even when the 0 is at the end, and will be the first
> expression evaluated, the first approach of scanning first and then
> applying full function is almost as fast.  And when the 0 will be caught
> last, it is just as slow as the check every element as you go approach.
>
> It can still be worth doing the latter approach as most functions are more
> expensive than +, and it could be saving an expensive operation, but in
> general, for short circuiting, if it is possible to find out where in the
> data the short circuit will occur, and then just applying the function
> until the short circuit, that will have the best performance.
>
> Still would be nice to have a tacit break. function.
>
>
> ----- Original Message -----
> From: Raul Miller <[email protected]>
> To: Programming forum <[email protected]>
> Cc:
> Sent: Monday, August 25, 2014 11:57:57 PM
> Subject: Re: [Jprogramming] Existing a Tacit
>
> The best technique for avoiding work is to not specify it in the first
> place.
>
> @. does work, of course.
>
> :: is another option.
>
> ^: is another option.
>
> Often, though, it's better to instead specify an operation which does the
> right thing instead of "exiting early". The reason for this has to do with
> the possibility that more work needs to be done elsewhere in the array.
> Examples of this kind of "exiting early" include adding 0 and multiplying
> by 1.
>
> Actually, it really depends on the kind of problem you are trying to solve.
> For example, using i. or indexing could also be considered to be a data
> driven "exiting early" approach.
>
> Usually it's best to focus on the practical issue you are trying to
> address...
>
> Thanks,
>
> --
> Raul
>
>
>
> On Mon, Aug 25, 2014 at 11:34 PM, William Szuch <[email protected]>
> wrote:
>
> > What techniques or methods can be used to exit a tacit at multiple points
> > depending on the results of the data flow through the tacit ?.
> >
> > In an explicit this is achieved by using the control statement
> "return."  a
> > multiple times.
> >
> >
> >
> > A simple case for one exit would be to use something like:
> >
> >
> >
> > f1`[email protected]
> >
> >
> >
> > A more generalised situation:
> >
> >
> >
> > (fn`[email protected])@:.(f2`extit1 @.t1)@: (f1`[email protected])
> >
> > Regards
> >
> >
> >
> > Bill Szuch
> >
> >
> >
> >
> >
> > ----------------------------------------------------------------------
> > 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