@Steven My wrong usage of the phrase "memory layout" I guess. I meant heap -> stack change (I thought this belongs to the term "memory layout"...). Also, I had though as long as I don't use any variables from the global scope the benchmark should be all right.
@yichao The versioninfo for v0.5 in my case is Julia Version 0.5.0-dev+3305 Commit c45175f (2016-03-29 03:51 UTC) It seems to be a bit earlier than your commit. On Sunday, May 22, 2016 at 1:26:28 AM UTC+1, Yichao Yu wrote: > > On Sat, May 21, 2016 at 7:04 PM, FANG Colin <[email protected] > <javascript:>> wrote: > > immutable MyType > > x::AbstractString > > y::Int > > end > > > > > > @time for i in 1:10^5 MyType("a", 1).y end > > > > > > In julia v0.4 > > > > 0.000813 seconds (100.00 k allocations: 3.052 MB) > > > > > > In julia v0.5 > > > > 0.000003 seconds (5 allocations: 176 bytes) > > > > > > It seems the memory layout for immutable which contains fields with > non-bit > > types has changed in v0.5. > > I believe this is due to better allocation elimination in type > inference[1]. This is exactly the case I meant by "allocation > benchmark doesn't work". > > [1] https://github.com/JuliaLang/julia/pull/16021#issuecomment-213789309 > > > > > > > I would like to know more in details about such change, Where can I find > the > > related issues, discussion in GitHub or mailing list? >
