If there is one thing that has a direct and massive impact on the performance of Julia code, it's the type system. And the most important thing about it is to write code that is type-stable. Type stability means that the type of a variable (including the return value of a function) must not vary with time or under different inputs. Understanding how to leverage type stability is key to writing fast software. Now that we know how to measure our code's execution time, we can see the effect of type instability with a few examples.
Let's take this innocent-looking function, for example:
julia> function f1() x = 0 for i in 1:10 x += sin(i) end x end f1 (generic function with 1 method)
There's nothing fancy about it. We have ...