Le jeudi 19 février 2015 à 07:10 -0800, Roy Wang a écrit :
> I'd appreciate it if someone can help me out with two questions:
> 
> I think this function is not a type-stable function. This is because
> the type of out depends on the input A. If it is type-stable, why?
No, it *is* type stable, precisely because the type of the output
depends only on the *type* of the input (or at least it seems it works
that way, but without more code it's hard to tell). Type-instability is
when the type of the output depends on the *value* of the input.

> function myfunc(A)
> out=similar(A)
> 
> #performs some computation that is then stored in out
> return out
> 
> end
> 
> 
> 
> I think this function is a type-stable function. If it isn't, why?
> function myfunc!(out,A)
> 
> #performs some computation that mutates out
> return nothing
> 
> end
> 
> 
> If my conclusions are correct, would you say it is better programming
> practice to use the second function as much as possible?
The second function is also type stable (AFAICT). The difference is that
it does not create a copy of the input, i.e. it works in place. This can
be better programming practice as it allocates less memory. The
convention in Julia is to provide both myfunc!() and a convenience
wrapper caller myfunc() which calls myfunc!(similar(A)).


Regards

Reply via email to