Project

General

Profile

Actions

Feature #17127

open

Some TrueClass methods are faster if implemented in Ruby

Feature #17127: Some TrueClass methods are faster if implemented in Ruby

Added by S_H_ (Shun Hiraoka) about 5 years ago. Updated about 5 years ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-dev:50948]

Description

Some TrueClass methods are faster if implemented in Ruby code.

like this.

class TrueClass def to_s "true".freeze end alias_method :inspect, :to_s def |(bool) true end end 

benchmark file:

benchmark: to_s: | true.to_s inspect: | true.inspect or: | true | false loop_count: 1000000 

benchmark result:

sh@MyComputer:~/rubydev/build$ make benchmark/trueclass.yml -e COMPARE_RUBY=~/.rbenv/shims/ruby -e BENCH_RUBY=../install/bin/ruby # Iteration per second (i/s) | |compare-ruby|built-ruby| |:--------|-----------:|---------:| |to_s | 66.001M| 91.927M| | | -| 1.39x| |inspect | 70.464M| 97.220M| | | -| 1.38x| |or | 61.434M| 86.484M| | | -| 1.41x| 

COMPARE_RUBY is ruby 2.8.0dev (2020-08-20T04:24:55Z master 6509652c13) [x86_64-linux]. BENCH_RUBY is ahead of ruby 2.8.0dev (2020-08-20T04:24:55Z master 6509652c13) [x86_64-linux].

Probably, inline method cache was able to speed up these methods.

pull request:
https://github.com/ruby/ruby/pull/3435

Updated by S_H_ (Shun Hiraoka) about 5 years ago Actions #1

  • Description updated (diff)

Updated by sawa (Tsuyoshi Sawada) about 5 years ago Actions #2

  • Subject changed from Some TrueClass methods is faster if implemented in Ruby to Some TrueClass methods are faster if implemented in Ruby
  • Description updated (diff)

Updated by k0kubun (Takashi Kokubun) about 5 years ago Actions #3 [ruby-dev:50949]

off topic: If you write an entire ticket in English, I think you should post your ticket to ruby-core to attract more audiences instead of ruby-dev, which has been for tickets written in Japanese.

Updated by S_H_ (Shun Hiraoka) about 5 years ago Actions #4 [ruby-dev:50950]

k0kubun (Takashi Kokubun) wrote in #note-3:

off topic: If you write an entire ticket in English, I think you should post your ticket to ruby-core to attract more audiences instead of ruby-dev, which has been for tickets written in Japanese.

Thanks!

Updated by S_H_ (Shun Hiraoka) about 5 years ago Actions #5 [ruby-dev:50951]

these method able to speeding up implemented by Ruby code.

  • TrueClass#^
  • TrueClass#&

benchmark:

benchmark: to_s: | true.to_s inspect: | true.inspect or: | true | false xor: | true ^ false and: | true & false loop_count: 1000000 

result:

sh@MyComputer:~/rubydev/build$ make benchmark/trueclass.yml -e COMPARE_RUBY=~/.rbenv/shims/ruby -e BENCH_RUBY=../install/bin/ruby # Iteration per second (i/s) | |compare-ruby|built-ruby| |:--------|-----------:|---------:| |to_s | 63.991M| 93.655M| | | -| 1.46x| |inspect | 83.655M| 96.044M| | | -| 1.15x| |or | 38.138M| 77.149M| | | -| 2.02x| |xor | 61.388M| 76.603M| | | -| 1.25x| |and | 59.928M| 71.783M| | | -| 1.20x| 

COMPARE_RUBY is ruby 2.8.0dev (2020-08-26T05:28:05Z master 72cb9bc55f) [x86_64-linux]. BENCH_RUBY is patched ruby.

Actions

Also available in: PDF Atom