It seems that the package runtests.jl will give you the answer:
julia> Pkg.test("Unroll")
INFO: Testing Unroll
TIMING TEST FOR SINGLE UNROLL
no unrolling:
969.406 milliseconds (9523 allocations: 207 MB, 7.77% gc time)
hand unrolled:
730.370 milliseconds (8170 allocations: 207 MB, 8.60% gc time)
unrolled by the macro
627.025 milliseconds (8178 allocations: 207 MB, 4.59% gc time)
TIMING TEST FOR NESTED UNROLL
no unrolling:
1.520 seconds (11846 allocations: 207 MB, 2.09% gc time)
hand unrolled:
953.836 milliseconds (10606 allocations: 207 MB, 6.29% gc time)
unrolled by the macro
946.106 milliseconds (10630 allocations: 207 MB, 5.98% gc time)
TIMING TEST FOR IF-THEN UNROLL
no unrolling:
961.234 milliseconds (10637 allocations: 207 MB, 3.31% gc time)
hand unrolled:
652.259 milliseconds (8180 allocations: 207 MB, 9.01% gc time)
unrolled by the macro
672.239 milliseconds (8204 allocations: 207 MB, 8.47% gc time)
INFO: Unroll tests passed
julia>
On Sunday, August 9, 2015 at 4:41:24 PM UTC+3, Tom Breloff wrote:
>
> I'm curious... Do you have any benchmarks of how much this can improve
> performance?
>
> On Saturday, August 8, 2015, <[email protected] <javascript:>> wrote:
>
>> I implemented a short macro that unrolls for-loops that have constant
>> bounds. For example
>>
>> @unroll for i = 1 : 4
>> a[i] = b[i] + c[i] + (mod(i,2)==0? d[i] : e[i])
>> end
>>
>> gets unrolled to
>>
>> a[1] = b[1] + c[1] + e[1]
>> a[2] = b[2] + c[2] + d[2]
>> a[3] = b[3] + c[3] + e[3]
>> a[4] = b[4] + c[4] + d[4]
>>
>> See: https://github.com/StephenVavasis/Unroll.jl
>>
>>
>>