Skip to content
  • Jean Boussier's avatar
    9594db0c
    Implement Hash.new(capacity:) · 9594db0c
    Jean Boussier authored
    [Feature #19236]
    
    When building a large hash, pre-allocating it with enough
    capacity can save many re-hashes and significantly improve
    performance.
    
    ```
    /opt/rubies/3.3.0/bin/ruby --disable=gems -rrubygems -I./benchmark/lib ./benchmark/benchmark-driver/exe/benchmark-driver \
    	            --executables="compare-ruby::../miniruby-master -I.ext/common --disable-gem" \
    	            --executables="built-ruby::./miniruby --disable-gem" \
    	            --output=markdown --output-compare -v $(find ./benchmark -maxdepth 1 -name 'hash_new' -o -name '*hash_new*.yml' -o -name '*hash_new*.rb' | sort)
    compare-ruby: ruby 3.4.0dev (2024-03-25T11:48:11Z master f53209f0) +YJIT dev [arm64-darwin23]
    last_commit=[ruby/irb] Cache RDoc::RI::Driver.new (https://github.com/ruby/irb/pull/911)
    built-ruby: ruby 3.4.0dev (2024-03-25T15:29:40Z hash-new-rb 77652b08a2) +YJIT dev [arm64-darwin23]
    warming up...
    
    |                    |compare-ruby|built-ruby|
    |:-------------------|-----------:|---------:|
    |new                 |      7.614M|    5.976M|
    |                    |       1.27x|         -|
    |new_with_capa_1k    |     13.931k|   15.698k|
    |                    |           -|     1.13x|
    |new_with_capa_100k  |     124.746|   148.283|
    |                    |           -|     1.19x|
    ```
    9594db0c
    Implement Hash.new(capacity:)
    Jean Boussier authored
    [Feature #19236]
    
    When building a large hash, pre-allocating it with enough
    capacity can save many re-hashes and significantly improve
    performance.
    
    ```
    /opt/rubies/3.3.0/bin/ruby --disable=gems -rrubygems -I./benchmark/lib ./benchmark/benchmark-driver/exe/benchmark-driver \
    	            --executables="compare-ruby::../miniruby-master -I.ext/common --disable-gem" \
    	            --executables="built-ruby::./miniruby --disable-gem" \
    	            --output=markdown --output-compare -v $(find ./benchmark -maxdepth 1 -name 'hash_new' -o -name '*hash_new*.yml' -o -name '*hash_new*.rb' | sort)
    compare-ruby: ruby 3.4.0dev (2024-03-25T11:48:11Z master f53209f0) +YJIT dev [arm64-darwin23]
    last_commit=[ruby/irb] Cache RDoc::RI::Driver.new (https://github.com/ruby/irb/pull/911)
    built-ruby: ruby 3.4.0dev (2024-03-25T15:29:40Z hash-new-rb 77652b08a2) +YJIT dev [arm64-darwin23]
    warming up...
    
    |                    |compare-ruby|built-ruby|
    |:-------------------|-----------:|---------:|
    |new                 |      7.614M|    5.976M|
    |                    |       1.27x|         -|
    |new_with_capa_1k    |     13.931k|   15.698k|
    |                    |           -|     1.13x|
    |new_with_capa_100k  |     124.746|   148.283|
    |                    |           -|     1.19x|
    ```
Loading