Skip to content

1.10 regression involving a higher-order function calling ^ #53144

Closed as not planned
@Drvi

Description

@Drvi

We've just noticed a regression with this MRE: foo(tf, args...) = sum(x->tf(args...), 1:100000000)

1.9.2:

julia> @btime foo($^, 10, 3)
  203.368 ms (0 allocations: 0 bytes)

1.10.0:

julia> @btime foo($^, 10, 3)
  281.304 ms (0 allocations: 0 bytes)

But the regression is present also at a very recent tip of the backports-release-1.10 branch.
Note that foo($+, 10, 3) has the same perf on both 1.9 and 1.10

Not sure if relevant, but the inffered effects seem different between 1.9 and 1.10:
1.9

julia> Base.infer_effects(foo, (typeof(^),Int,Int))
(!c,+e,!n,!t,+s,+m,+i)
#               ^

1.10

julia> Base.infer_effects(foo, (typeof(^),Int,Int))
(!c,+e,!n,!t,+s,!m,+i)
#               ^

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions