# Func compose(∘) is slow

**URL:** <https://discourse.julialang.org/t/func-compose-is-slow/50776>\
**Category:** Internals & Design\
**Created:** [November 25, 2020, 8:52pm UTC](https://discourse.julialang.org/t/func-compose-is-slow/50776 "2020-11-25T20:52:17Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![novitk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/novitk/32/19744_2.png) [@novitk](https://discourse.julialang.org/u/novitk)\
**Post date:** [November 25, 2020, 8:52pm UTC](https://discourse.julialang.org/t/func-compose-is-slow/50776/1 "2020-11-25T20:52:17Z")

</div>

newbie here, so code\_lowered and code\_llvm is magic for me atm, but can somebody explain this pls(1.5.1)?  
julia\> using Dates  
julia\> n = 1\_000\_000  
julia\> @time map(x-\>Time(Nanosecond(x)), rand(Int64, n));  
0.069440 seconds (45.63 k allocations: 17.583 MiB, 10.79% gc time)  
julia\> @time map(Time∘Nanosecond, rand(Int64, n));  
1.629330 seconds (3.00 M allocations: 61.035 MiB, 0.31% gc time)

---

<div class="post-metadata">

**Author:** ![jw3126](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jw3126/32/3086_2.png) [@jw3126](https://discourse.julialang.org/u/jw3126)\
**Post date:** [November 25, 2020, 9:05pm UTC](https://discourse.julialang.org/t/func-compose-is-slow/50776/2 "2020-11-25T21:05:42Z")

</div>

I think this is fixed on master. Presumably the problem is that compose does not specialize on types in 1.5. [https://github.com/JuliaLang/julia/pull/35980](https://github.com/JuliaLang/julia/pull/35980)

---

<div class="post-metadata">

**Author:** ![novitk](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/novitk/32/19744_2.png) [@novitk](https://discourse.julialang.org/u/novitk)\
**Post date:** [November 25, 2020, 10:40pm UTC](https://discourse.julialang.org/t/func-compose-is-slow/50776/3 "2020-11-25T22:40:31Z")

</div>

Indeed! on nightly:  
julia\> @time map(Time∘Nanosecond, rand(Int64, n));  
0.013052 seconds (6 allocations: 15.259 MiB)  
TYVM
