Open
Description
Hi! We noticed that the iterating permutations
got significantly slower in 1.0.3 for large-ish inputs:
1.0.2
julia> ps = Combinatorics.permutations([i for i in 1:11])
Combinatorics.Permutations{Vector{Int64}}([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 11)
julia> @time iterate(ps)
0.000008 seconds (4 allocations: 464 bytes)
([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 10])
julia> ps = Combinatorics.permutations([i for i in 1:12])
Combinatorics.Permutations{Vector{Int64}}([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 12)
julia> @time iterate(ps)
0.000005 seconds (4 allocations: 512 bytes)
([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 11])
1.0.3
julia> ps = Combinatorics.permutations([i for i in 1:11])
Combinatorics.Permutations{Vector{Int64}}([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], 11)
julia> @time iterate(ps)
7.115521 seconds (3 allocations: 320 bytes)
([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
julia> ps = Combinatorics.permutations([i for i in 1:12])
Combinatorics.Permutations{Vector{Int64}}([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 12)
julia> @time iterate(ps)
184.690355 seconds (3 allocations: 352 bytes)
([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
It would be great to have a permutations iterator that is as fast as the 1.0.2 version for larger inputs. Thank you!
Metadata
Metadata
Assignees
Labels
No labels