In terms of optimization, I think "Julia-style psuedocode" is a good way to start, keeping in mind the performance tips <http://julia.readthedocs.org/en/latest/manual/performance-tips/>. I reread that every once in a while, finding I've forgotten some useful info. Don't bother trying to make everything as fast as possible in the first pass. Once you have a correct version, profiling <http://julia.readthedocs.org/en/latest/stdlib/profile/> is the way to go. Tim Holy's ProfileView <https://github.com/timholy/ProfileView.jl> and IProfile <https://github.com/timholy/IProfile.jl> packages are extremely helpful.
If you're doing numerical work, it's useful to read Fast Numeric Computation in Julia <http://julialang.org/blog/2013/09/fast-numeric/>, which point to the NumericExtensions <https://github.com/lindahua/NumericExtensions.jl> and Devectorize <https://github.com/lindahua/Devectorize.jl> packages. For package development...well I'm not really an expert on that, but I'm sure others will have more input. But it's good to think early about how users will use your package and how it integrates with Base or other packages. For example if you are implementing some machine learning algorithm, do you want it to just operate on Arrays, or do you want to provide an interface that uses formulas and DataFrames? Sam On Thursday, July 10, 2014 3:55:20 PM UTC-7, Ted Fujimoto wrote: > > Hi all, > > Can anyone recommend any references on how to create a Julia package like > a seasoned Julia developer? Based on my conversations with some of the > Julia experts, the process seems a bit more involved than just writing out > Julia-style pseudocode. Are there general rules of thumb on how to optimize > Julia code? > > Thanks, > Ted >
