Issue #20462 has been updated by jhawthorn (John Hawthorn).
In a benchmark of thread creation we see that 3.3 is slower than 3.2
```
jhawthorn@zergling:~ [ruby 3.2.2]
$ time ruby --disable-gems -e '100_000.times { Thread.new{}.join }'
ruby --disable-gems -e '100_000.times { Thread.new{}.join }' 0.73s user 1.16s
system 107% cpu 1.751 total
jhawthorn@zergling:~ [ruby 3.3.1]
$ time ruby --disable-gems -e '100_000.times { Thread.new{}.join }'
ruby --disable-gems -e '100_000.times { Thread.new{}.join }' 0.55s user 1.67s
system 70% cpu 3.126 total
```
----------------------------------------
Bug #20462: Native threads are no longer reused
https://bugs.ruby-lang.org/issues/20462#change-108157
* Author: tenderlovemaking (Aaron Patterson)
* Status: Open
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN
----------------------------------------
Ruby used to reuse native threads in order to amortize the cost of making a pthread.
For example this program:
```ruby
ntids = 1000.times.map {
Thread.new {
Thread.current.native_thread_id
}.value
}
p ntids.uniq.length
```
With Ruby 3.2.0, this would return 1. With Ruby 3.3.x, it returns 1000. It means we
cannot amortize the cost of a pthread for short lived threads.
I was able to bisect this to commit be1bbd5b7d40ad863ab35097765d3754726bbd54. But the
change is big so I don't know how to fix it.
--
https://bugs.ruby-lang.org/