On Sat, May 7, 2016 at 6:58 AM, Ben Ward <axolotlfan9...@gmail.com> wrote:
> Hi,
>
> I have a question which may be laughable to CS people (be gentle, I'm a
> Biologist), but we know from guidelines that Julia performs best, when a
> method always returns the same type of value.
> So the Julia type inference knows - ok, use this method with an Int, it will
> always return a bool say. How does throws fit into this? To my mind this
> means the method used with an Int may return a bool, but it also may result
> in a type of (e.g.) ArgumentError getting thrown. So how do throws in
> functions affect performance and julian's ability to infer types and
> optimise code (if at all?)?

While throwing or catching an error itself is slow (mostly due to
various technical reason) they shouldn't affect type stability.

The type inference currently do not reason about what type of
exception can be thrown and even if it does, this won't affect what we
usually call the type stability of a function since it is only about
the **return type** of a function and throwing an error is not return
(in the sense that `a = cond ? error() : 1`, if the next statement is
executed, a is always a `Int`).

>
> Thanks,
> Ben W.

Reply via email to