I am on Julia 1.3. I do not understand why broadcasting over an anonymous function is much slower than `map`

:

```
julia> x1, x2 = rand(10^6), rand(10^6);
julia> @time ((x1, x2) -> x1 < x2).(x1, x2);
0.265166 seconds (241.28 k allocations: 11.668 MiB, 55.32% gc time)
julia> @time ((x1, x2) -> x1 < x2).(x1, x2);
0.127725 seconds (241.26 k allocations: 11.668 MiB)
julia> @time ((x1, x2) -> x1 < x2).(x1, x2);
0.118113 seconds (241.27 k allocations: 11.667 MiB)
julia> @time map((x1, x2) -> x1 < x2, x1, x2);
0.049027 seconds (75.05 k allocations: 4.463 MiB)
julia> @time map((x1, x2) -> x1 < x2, x1, x2);
0.039501 seconds (75.05 k allocations: 4.462 MiB)
julia> @time map((x1, x2) -> x1 < x2, x1, x2);
0.060107 seconds (75.07 k allocations: 4.466 MiB, 13.32% gc time)
```

Notes:

- if anonymous function is defined in inner scope (e.g. within a function) this does not happen
- if anonymous function is passed as an argument to a function and used in this function then this does still happen

(for normal functions this is not the case) - this does not happen for normal functions

CC

@nalimilan - this is related to auto-splatting design

@mbauman - maybe you know the answer immediately (or this question has been asked)