Create a gist now

Instantly share code, notes, and snippets.

@z-m-k /timeIt.ipynb
Last active Aug 29, 2015

What would you like to do?
timeIt function for benchmarking Julia code
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
using DataFrames
function timeIt(fs::Array{Function}, k)
nf=length(fs)
#Initialize and output checks
outs_init=[f() for f in fs]
times=fill(0.0, 3, k, nf)
for (i,f) in enumerate(fs)
for j=1:k
t=@timed f()
times[:,j,i]=[t[2:end]...]
end
end
out_last=[f() for f in fs]
out_same=nf>1 ? [NaN; [out_last[i]==out_last[1] for i=2:nf]] : [true]
out_consistent=[x==y for (x,y) in zip(outs_init, out_last)]
times[2,:,:]/=1e6
averages=mean(times,2)
averages_min=minimum(averages,3)
medians=median(times,2)
medians_min=minimum(medians,3)
e_notation(x)=@sprintf("%.02e", x)
results=DataFrame(
Function=map(string, fs),
Consistent=out_consistent,
Same=out_same,
Avg_t=map(e_notation, vec(averages[1,:,:])),
Avg_t_X= nf>1 ? map(e_notation, vec(averages[1,:,:])./vec(averages_min[1,:,:])) : [NaN],
Med_t=map(e_notation, vec(medians[1,:,:])),
Med_t_X= nf>1 ? map(e_notation, vec(medians[1,:,:])./vec(medians_min[1,:,:])) : [NaN],
Avg_mem=map(e_notation, vec(averages[2,:,:])),
Avg_mem_X= nf>1 ? map(e_notation, vec(averages[2,:,:])./vec(averages_min[2,:,:])) : [NaN],
Med_mem=map(e_notation, vec(medians[2,:,:])),
Med_mem_X= nf>1 ? map(e_notation, vec(medians[2,:,:])./vec(medians_min[2,:,:])) : [NaN]
)
return results
end
timeIt(f::Function, k)=timeIt([f], k)
timeIt([()->(), ()->1],5);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment