Skip to content

Conversation

@kyanagi
Copy link
Contributor

@kyanagi kyanagi commented Nov 29, 2024

Improved performance by ensuring that identical Set objects are processed only once.

benchmark

prelude: |
  set = Set[1, 2]
  mul = Set[set, Set[set, 4], 3]
  large_set = Set.new(1..10000)
benchmark:
  - set.flatten
  - mul.flatten
  - large_set.flatten

compare-ruby: ruby 3.4.0dev (2024-11-29T02:48:10Z master 43dd9c721f) +PRISM [arm64-darwin22]
built-ruby: ruby 3.4.0dev (2024-11-29T02:48:10Z master 43dd9c721f) +PRISM [arm64-darwin22]

Iteration per second (i/s)

compare-ruby built-ruby
set.flatten 1.357M 1.767M
- 1.30x
mul.flatten 470.122k 686.182k
- 1.46x
large_set.flatten 899.207 905.055
- 1.01x

Improved performance by ensuring that identical `Set` objects are
processed only once.
@kyanagi kyanagi requested a review from knu as a code owner November 29, 2024 03:41
@knu knu merged commit 98ebfec into ruby:master Nov 29, 2024
11 checks passed
@kyanagi kyanagi deleted the speedup-flatten branch November 29, 2024 10:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants