arrow-julia icon indicating copy to clipboard operation
arrow-julia copied to clipboard

Substantial performance regression on 1.11 relative to 1.10

Open palday opened this issue 10 months ago • 8 comments

Casual testing on my M1 Macbook shows a pretty substantial performance regression on tests in 1.11 relative to 1.10.

Julia 1.10:

Test Summary: |  Pass  Total     Time
Arrow         | 66047  66047  5m08.9s

Julia 1.11:

Test Summary: |  Pass  Total      Time
Arrow         | 66047  66047  13m54.1s

palday avatar Feb 28 '25 18:02 palday

is this just running ]test? if so it may not be a performance regression on normal usage

Moelf avatar Feb 28 '25 18:02 Moelf

Why would testing be different?

Also, more than doubling the time it takes to run tests seems ... less than optimal when it comes to development.

palday avatar Feb 28 '25 18:02 palday

tests are run with stuff like bounds checking forced "on" for everything, it could be some heuristics change from Julia compiler side that accidentally changed compilation result for test-time only

less than optimal when it comes to development.

yes assuming there is development...

Moelf avatar Feb 28 '25 18:02 Moelf

Manually running tests outside of Pkg.test:

1.10:

julia +1.10 --project=test -e'using Pkg; Pkg.develop(path="./"); Pkg.update(); @time include("test/runtests.jl")'
Test Summary: | Pass  Total  Time
ArrowTypes    |  127    127  0.5s
Test Summary:                       | Pass  Total  Time
Date and time wrappers with missing |    4      4  5.0s
Test Summary:      | Pass  Total  Time
`default(T) isa T` |   10     10  0.0s
Test Summary: |  Pass  Total     Time
Arrow         | 66047  66047  3m48.7s
239.948859 seconds (897.30 M allocations: 59.172 GiB, 5.05% gc time, 97.20% compilation time: <1% of which was recompilation)

1.11:

julia +1.11 --project=test -e'using Pkg; Pkg.develop(path="./"); Pkg.update(); @time include("test/runtests.jl")'
Test Summary: | Pass  Total  Time
ArrowTypes    |  127    127  0.5s
Test Summary:                       | Pass  Total  Time
Date and time wrappers with missing |    4      4  5.9s
Test Summary:      | Pass  Total  Time
`default(T) isa T` |   10     10  0.0s
Test Summary: |  Pass  Total      Time
Arrow         | 66047  66047  11m50.4s
724.425272 seconds (4.33 G allocations: 196.264 GiB, 2.73% gc time, 99.11% compilation time: <1% of which was recompilation

palday avatar Feb 28 '25 19:02 palday

that's pretty bad huh

Moelf avatar Feb 28 '25 19:02 Moelf

Possibly related julialang issues:

  • https://github.com/JuliaLang/julia/issues/56080
  • https://github.com/JuliaLang/julia/issues/56093
  • https://github.com/JuliaLang/julia/issues/56861

palday avatar Mar 03 '25 17:03 palday

Seems to be mostly fixed as of v1.12 (looking locally, and at latest CI for example: https://github.com/apache/arrow-julia/actions/runs/17845280009/job/50743369381)

vtjnash avatar Sep 30 '25 20:09 vtjnash

Thanks. Can we close this?

kou avatar Sep 30 '25 22:09 kou