diff options
| author | Jean Boussier <jean.boussier@gmail.com> | 2025-12-13 06:35:58 +0100 |
|---|---|---|
| committer | Jean Boussier <jean.boussier@gmail.com> | 2026-02-12 20:35:18 +0100 |
| commit | d8b8a95af9d6aab1e8da2b6f1808bc3ffd406889 (patch) | |
| tree | bda49e00ed6d1df7c8dadc6296673500260f65ac /test/ruby | |
| parent | f33073a6cb8e6800309de815a1acce3322401bd1 (diff) | |
Make Monitor a core class
[Feature #21788]
It allows monitor to access internal routines and remove some overhead.
Before:
```
ruby 4.0.0dev (2025-12-13T04:52:13Z master 71dd272506) +YJIT +PRISM [arm64-darwin25]
Warming up --------------------------------------
Mutex 2.111M i/100ms
Monitor 1.736M i/100ms
Calculating -------------------------------------
Mutex 25.050M (± 0.4%) i/s (39.92 ns/i) - 126.631M in 5.055208s
Monitor 19.809M (± 0.1%) i/s (50.48 ns/i) - 100.672M in 5.082015s
```
After:
```
ruby 4.0.0dev (2025-12-13T06:49:18Z core-monitor 6fabf389fd) +YJIT +PRISM [arm64-darwin25]
Warming up --------------------------------------
Mutex 2.144M i/100ms
Monitor 1.859M i/100ms
Calculating -------------------------------------
Mutex 24.771M (± 0.4%) i/s (40.37 ns/i) - 124.342M in 5.019716s
Monitor 23.722M (± 0.4%) i/s (42.15 ns/i) - 118.998M in 5.016361s
```
Bench:
```ruby
require 'bundler/inline'
gemfile do
gem "benchmark-ips"
end
mutex = Mutex.new
require "monitor"
monitor = Monitor.new
Benchmark.ips do |x|
x.report("Mutex") { mutex.synchronize { } }
x.report("Monitor") { monitor.synchronize { } }
end
```
Diffstat (limited to 'test/ruby')
0 files changed, 0 insertions, 0 deletions
