Skip to content

Instantly share code, notes, and snippets.

@nalimilan
Last active November 26, 2016 17:44
Show Gist options
  • Save nalimilan/57ea0640ffb8fc4a8424b558efe3ff4d to your computer and use it in GitHub Desktop.
Save nalimilan/57ea0640ffb8fc4a8424b558efe3ff4d to your computer and use it in GitHub Desktop.
# With this PR:
julia> profile_broadcast_all()
f(x, y) := x * y
Method: broadcast!(f, dest, A1, A2) (no empty entries):
For Array{Float64}: 0.022608 seconds (4 allocations: 128 bytes)
For NullableArray{Float64}: 0.169757 seconds (6 allocations: 288 bytes)
For DataArray{Float64}: 0.066087 seconds (14 allocations: 1.192 MB)
Method: broadcast!(f, dest, A1, A2) (~half empty entries):
For NullableArray{Float64}: 0.175772 seconds (6 allocations: 288 bytes)
For DataArray{Float64}: 0.173602 seconds (14 allocations: 1.192 MB)
Method: .+ (no empty entries)
For Array{Float64}: 0.040145 seconds (26 allocations: 76.295 MB, 12.08% gc time)
For NullableArray{Float64}: 0.076855 seconds (7 allocations: 152.588 MB, 1.16% gc time)
For DataArray{Float64}: 0.086226 seconds (29 allocations: 78.679 MB, 0.95% gc time)
Method: .- (no empty entries)
For Array{Float64}: 0.040029 seconds (17 allocations: 76.294 MB, 12.69% gc time)
For NullableArray{Float64}: 0.072451 seconds (7 allocations: 152.588 MB, 1.20% gc time)
For DataArray{Float64}: 0.086880 seconds (43 allocations: 78.680 MB, 0.90% gc time)
Method: .* (no empty entries)
For Array{Float64}: 0.038966 seconds (17 allocations: 76.294 MB, 13.15% gc time)
For NullableArray{Float64}: 0.073219 seconds (7 allocations: 152.588 MB, 1.16% gc time)
For DataArray{Float64}: 0.088163 seconds (29 allocations: 78.679 MB, 0.91% gc time)
Method: ./ (no empty entries)
For Array{Float64}: 0.037906 seconds (17 allocations: 76.294 MB, 12.46% gc time)
For NullableArray{Float64}: 0.072632 seconds (7 allocations: 152.588 MB, 1.20% gc time)
For DataArray{Float64}: 0.083570 seconds (43 allocations: 78.680 MB, 0.86% gc time)
Method: .% (no empty entries)
For Array{Float64}: 0.258195 seconds (17 allocations: 76.294 MB, 2.05% gc time)
For NullableArray{Float64}: 0.293727 seconds (7 allocations: 152.588 MB, 0.39% gc time)
For DataArray{Float64}: 0.303632 seconds (29 allocations: 78.679 MB, 0.38% gc time)
Method: .^ (no empty entries)
For Array{Float64}: 1.051643 seconds (17 allocations: 76.294 MB, 0.50% gc time)
For NullableArray{Float64}: 1.188684 seconds (7 allocations: 152.588 MB, 0.09% gc time)
For DataArray{Float64}: 1.197895 seconds (43 allocations: 78.680 MB, 0.08% gc time)
Method: .== (no empty entries)
For Array{Float64}: 0.021654 seconds (7.35 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.053464 seconds (16 allocations: 19.074 MB, 7.04% gc time)
For DataArray{Float64}: 0.074085 seconds (29 allocations: 11.922 MB)
Method: .!= (no empty entries)
For Array{Float64}: 0.021635 seconds (7.35 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.163690 seconds (16 allocations: 19.074 MB, 1.23% gc time)
For DataArray{Float64}: 0.070756 seconds (29 allocations: 11.922 MB)
Method: .< (no empty entries)
For Array{Float64}: 0.019015 seconds (7.35 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.051983 seconds (16 allocations: 19.074 MB, 3.62% gc time)
For DataArray{Float64}: 0.071045 seconds (29 allocations: 11.922 MB)
Method: .> (no empty entries)
For Array{Float64}: 0.019914 seconds (7.34 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.051022 seconds (16 allocations: 19.074 MB, 3.77% gc time)
For DataArray{Float64}: 0.070406 seconds (29 allocations: 11.922 MB)
Method: .<= (no empty entries)
For Array{Float64}: 0.019871 seconds (7.35 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.046939 seconds (16 allocations: 19.074 MB, 4.00% gc time)
For DataArray{Float64}: 0.069151 seconds (29 allocations: 11.922 MB)
Method: .>= (no empty entries)
For Array{Float64}: 0.019648 seconds (7.34 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.047056 seconds (16 allocations: 19.074 MB, 4.07% gc time)
For DataArray{Float64}: 0.070692 seconds (29 allocations: 11.922 MB)
Method: .+ (~half empty entries)
For Array{Float64}: 0.038784 seconds (17 allocations: 76.294 MB, 9.64% gc time)
For NullableArray{Float64}: 0.147913 seconds (7 allocations: 152.588 MB, 0.21% gc time)
For DataArray{Float64}: 0.202850 seconds (29 allocations: 78.679 MB, 0.17% gc time)
Method: .- (~half empty entries)
For Array{Float64}: 0.036788 seconds (17 allocations: 76.294 MB, 10.64% gc time)
For NullableArray{Float64}: 0.152645 seconds (7 allocations: 152.588 MB, 0.20% gc time)
For DataArray{Float64}: 0.200743 seconds (43 allocations: 78.680 MB, 0.16% gc time)
Method: .* (~half empty entries)
For Array{Float64}: 0.038245 seconds (17 allocations: 76.294 MB, 10.28% gc time)
For NullableArray{Float64}: 0.148186 seconds (7 allocations: 152.588 MB, 0.24% gc time)
For DataArray{Float64}: 0.198268 seconds (29 allocations: 78.679 MB, 0.18% gc time)
Method: ./ (~half empty entries)
For Array{Float64}: 0.036581 seconds (17 allocations: 76.294 MB, 10.53% gc time)
For NullableArray{Float64}: 0.150732 seconds (7 allocations: 152.588 MB, 0.24% gc time)
For DataArray{Float64}: 0.203460 seconds (43 allocations: 78.680 MB, 0.15% gc time)
Method: .% (~half empty entries)
For Array{Float64}: 0.263253 seconds (17 allocations: 76.294 MB, 1.50% gc time)
For NullableArray{Float64}: 0.226928 seconds (7 allocations: 152.588 MB, 0.24% gc time)
For DataArray{Float64}: 0.274027 seconds (29 allocations: 78.679 MB, 0.13% gc time)
Method: .^ (~half empty entries)
For Array{Float64}: 1.114143 seconds (17 allocations: 76.294 MB, 0.36% gc time)
For NullableArray{Float64}: 0.526328 seconds (7 allocations: 152.588 MB, 0.08% gc time)
For DataArray{Float64}: 0.474011 seconds (43 allocations: 78.680 MB, 0.07% gc time)
Method: .== (~half empty entries)
For Array{Float64}: 0.021665 seconds (7.35 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.134753 seconds (16 allocations: 19.074 MB, 0.37% gc time)
For DataArray{Float64}: 0.180980 seconds (29 allocations: 11.922 MB)
Method: .!= (~half empty entries)
For Array{Float64}: 0.021981 seconds (7.35 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.160016 seconds (16 allocations: 19.074 MB, 0.34% gc time)
For DataArray{Float64}: 0.178327 seconds (29 allocations: 11.922 MB)
Method: .< (~half empty entries)
For Array{Float64}: 0.023078 seconds (7.35 k allocations: 1.569 MB, 10.14% gc time)
For NullableArray{Float64}: 0.134577 seconds (16 allocations: 19.074 MB)
For DataArray{Float64}: 0.181011 seconds (29 allocations: 11.922 MB, 0.28% gc time)
Method: .> (~half empty entries)
For Array{Float64}: 0.019889 seconds (7.34 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.138768 seconds (16 allocations: 19.074 MB, 1.48% gc time)
For DataArray{Float64}: 0.188418 seconds (29 allocations: 11.922 MB)
Method: .<= (~half empty entries)
For Array{Float64}: 0.020114 seconds (7.35 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.135491 seconds (16 allocations: 19.074 MB, 0.35% gc time)
For DataArray{Float64}: 0.180646 seconds (29 allocations: 11.922 MB)
Method: .>= (~half empty entries)
For Array{Float64}: 0.022049 seconds (7.34 k allocations: 1.569 MB, 11.25% gc time)
For NullableArray{Float64}: 0.140012 seconds (16 allocations: 19.074 MB)
For DataArray{Float64}: 0.183765 seconds (29 allocations: 11.922 MB, 0.27% gc time)
Method: .>> (no empty entries)
For Array{Float64}: 0.043924 seconds (3 allocations: 76.294 MB, 3.23% gc time)
For NullableArray{Float64}: 0.086842 seconds (3 allocations: 152.588 MB, 4.98% gc time)
For DataArray{Float64}: 0.620228 seconds (30.00 M allocations: 534.042 MB, 16.55% gc time)
Method: .>> (~half empty entries)
For Array{Float64}: 0.050919 seconds (3 allocations: 76.294 MB, 12.86% gc time)
For NullableArray{Float64}: 0.082804 seconds (3 allocations: 152.588 MB, 4.73% gc time)
# With master:
julia> profile_broadcast_all()
f(x, y) := x * y
Method: broadcast!(f, dest, A1, A2) (no empty entries):
For Array{Float64}: 0.022771 seconds (4 allocations: 128 bytes)
For NullableArray{Float64}: 0.230929 seconds (6 allocations: 224 bytes)
For DataArray{Float64}: 0.067204 seconds (14 allocations: 1.192 MB)
Method: broadcast!(f, dest, A1, A2) (~half empty entries):
For NullableArray{Float64}: 0.149151 seconds (6 allocations: 224 bytes)
For DataArray{Float64}: 0.181280 seconds (14 allocations: 1.192 MB)
Method: .+ (no empty entries)
For Array{Float64}: 0.048431 seconds (26 allocations: 76.295 MB, 19.74% gc time)
For NullableArray{Float64}: 0.079436 seconds (7 allocations: 152.588 MB, 1.11% gc time)
For DataArray{Float64}: 0.092300 seconds (29 allocations: 78.679 MB, 1.16% gc time)
Method: .- (no empty entries)
For Array{Float64}: 0.041340 seconds (17 allocations: 76.294 MB, 12.65% gc time)
For NullableArray{Float64}: 0.094771 seconds (7 allocations: 152.588 MB, 1.03% gc time)
For DataArray{Float64}: 0.092655 seconds (43 allocations: 78.680 MB, 0.80% gc time)
Method: .* (no empty entries)
For Array{Float64}: 0.052857 seconds (17 allocations: 76.294 MB, 11.80% gc time)
For NullableArray{Float64}: 0.075786 seconds (7 allocations: 152.588 MB, 1.35% gc time)
For DataArray{Float64}: 0.109453 seconds (29 allocations: 78.679 MB, 0.66% gc time)
Method: ./ (no empty entries)
For Array{Float64}: 0.039831 seconds (17 allocations: 76.294 MB, 12.76% gc time)
For NullableArray{Float64}: 0.072885 seconds (7 allocations: 152.588 MB, 1.25% gc time)
For DataArray{Float64}: 0.089161 seconds (43 allocations: 78.680 MB, 0.86% gc time)
Method: .% (no empty entries)
For Array{Float64}: 0.272219 seconds (17 allocations: 76.294 MB, 2.03% gc time)
For NullableArray{Float64}: 0.283037 seconds (7 allocations: 152.588 MB, 0.31% gc time)
For DataArray{Float64}: 0.358456 seconds (29 allocations: 78.679 MB, 0.28% gc time)
Method: .^ (no empty entries)
For Array{Float64}: 1.135857 seconds (17 allocations: 76.294 MB, 0.46% gc time)
For NullableArray{Float64}: 1.267591 seconds (7 allocations: 152.588 MB, 0.07% gc time)
For DataArray{Float64}: 1.262061 seconds (43 allocations: 78.680 MB, 0.07% gc time)
Method: .== (no empty entries)
For Array{Float64}: 0.021916 seconds (7.35 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.063389 seconds (35 allocations: 85.832 MB, 3.74% gc time)
For DataArray{Float64}: 0.075712 seconds (29 allocations: 11.922 MB)
Method: .!= (no empty entries)
For Array{Float64}: 0.021485 seconds (7.35 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.198496 seconds (35 allocations: 85.832 MB, 0.78% gc time)
For DataArray{Float64}: 0.098689 seconds (29 allocations: 11.922 MB)
Method: .< (no empty entries)
For Array{Float64}: 0.029760 seconds (7.35 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.095149 seconds (35 allocations: 85.832 MB, 5.30% gc time)
For DataArray{Float64}: 0.089476 seconds (29 allocations: 11.922 MB)
Method: .> (no empty entries)
For Array{Float64}: 0.019798 seconds (7.34 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.065922 seconds (35 allocations: 85.832 MB, 2.29% gc time)
For DataArray{Float64}: 0.072888 seconds (29 allocations: 11.922 MB)
Method: .<= (no empty entries)
For Array{Float64}: 0.021250 seconds (7.35 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.063522 seconds (35 allocations: 85.832 MB, 2.34% gc time)
For DataArray{Float64}: 0.093620 seconds (29 allocations: 11.922 MB)
Method: .>= (no empty entries)
For Array{Float64}: 0.020787 seconds (7.34 k allocations: 1.569 MB)
For NullableArray{Float64}: 0.075613 seconds (35 allocations: 85.832 MB, 1.97% gc time)
For DataArray{Float64}: 0.072177 seconds (29 allocations: 11.922 MB)
Method: .+ (~half empty entries)
For Array{Float64}: 0.062640 seconds (17 allocations: 76.294 MB, 7.89% gc time)
For NullableArray{Float64}: 0.247949 seconds (7 allocations: 152.588 MB, 0.18% gc time)
For DataArray{Float64}: 0.286722 seconds (29 allocations: 78.679 MB, 0.24% gc time)
Method: .- (~half empty entries)
For Array{Float64}: 0.045263 seconds (17 allocations: 76.294 MB, 10.06% gc time)
For NullableArray{Float64}: 0.190388 seconds (7 allocations: 152.588 MB, 0.16% gc time)
For DataArray{Float64}: 0.223639 seconds (43 allocations: 78.680 MB, 0.15% gc time)
Method: .* (~half empty entries)
For Array{Float64}: 0.037208 seconds (17 allocations: 76.294 MB, 12.27% gc time)
For NullableArray{Float64}: 0.170355 seconds (7 allocations: 152.588 MB, 0.19% gc time)
For DataArray{Float64}: 0.204789 seconds (29 allocations: 78.679 MB, 0.15% gc time)
Method: ./ (~half empty entries)
For Array{Float64}: 0.039877 seconds (17 allocations: 76.294 MB, 10.86% gc time)
For NullableArray{Float64}: 0.165998 seconds (7 allocations: 152.588 MB, 0.19% gc time)
For DataArray{Float64}: 0.234462 seconds (43 allocations: 78.680 MB, 0.16% gc time)
Method: .% (~half empty entries)
For Array{Float64}: 0.263629 seconds (17 allocations: 76.294 MB, 1.68% gc time)
For NullableArray{Float64}: 0.209331 seconds (7 allocations: 152.588 MB, 0.19% gc time)
For DataArray{Float64}: 0.258300 seconds (29 allocations: 78.679 MB, 0.12% gc time)
Method: .^ (~half empty entries)
For Array{Float64}: 1.162230 seconds (17 allocations: 76.294 MB, 0.40% gc time)
For NullableArray{Float64}: 0.495096 seconds (7 allocations: 152.588 MB, 0.08% gc time)
For DataArray{Float64}: 0.501497 seconds (43 allocations: 78.680 MB, 0.09% gc time)
Method: .== (~half empty entries)
For Array{Float64}: 0.025212 seconds (7.35 k allocations: 1.569 MB, 17.09% gc time)
For NullableArray{Float64}: 0.140981 seconds (35 allocations: 85.832 MB, 0.40% gc time)
For DataArray{Float64}: 0.190740 seconds (29 allocations: 11.922 MB)
Method: .!= (~half empty entries)
For Array{Float64}: 0.027196 seconds (7.35 k allocations: 1.569 MB, 16.46% gc time)
For NullableArray{Float64}: 0.201832 seconds (35 allocations: 85.832 MB, 0.27% gc time)
For DataArray{Float64}: 0.197878 seconds (29 allocations: 11.922 MB)
Method: .< (~half empty entries)
For Array{Float64}: 0.024792 seconds (7.35 k allocations: 1.569 MB, 17.41% gc time)
For NullableArray{Float64}: 0.147801 seconds (35 allocations: 85.832 MB, 0.30% gc time)
For DataArray{Float64}: 0.185029 seconds (29 allocations: 11.922 MB)
Method: .> (~half empty entries)
For Array{Float64}: 0.025320 seconds (7.34 k allocations: 1.569 MB, 17.47% gc time)
For NullableArray{Float64}: 0.159205 seconds (35 allocations: 85.832 MB, 0.35% gc time)
For DataArray{Float64}: 0.183695 seconds (29 allocations: 11.922 MB)
Method: .<= (~half empty entries)
For Array{Float64}: 0.023909 seconds (7.35 k allocations: 1.569 MB, 17.46% gc time)
For NullableArray{Float64}: 0.155518 seconds (35 allocations: 85.832 MB, 0.30% gc time)
For DataArray{Float64}: 0.183465 seconds (29 allocations: 11.922 MB)
Method: .>= (~half empty entries)
For Array{Float64}: 0.023747 seconds (7.34 k allocations: 1.569 MB, 17.87% gc time)
For NullableArray{Float64}: 0.145865 seconds (35 allocations: 85.832 MB, 0.30% gc time)
For DataArray{Float64}: 0.188796 seconds (29 allocations: 11.922 MB)
Method: .>> (no empty entries)
For Array{Float64}: 0.044070 seconds (3 allocations: 76.294 MB, 3.16% gc time)
For NullableArray{Float64}: 0.091259 seconds (3 allocations: 152.588 MB, 7.80% gc time)
For DataArray{Float64}: 0.644610 seconds (30.00 M allocations: 534.042 MB, 15.94% gc time)
Method: .>> (~half empty entries)
For Array{Float64}: 0.052402 seconds (3 allocations: 76.294 MB, 13.78% gc time)
For NullableArray{Float64}: 0.085038 seconds (3 allocations: 152.588 MB, 5.14% gc time)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment