Issue #13827 has been reported by Soilent (Konstantin _).

----------------------------------------
Bug #13827: Improve performance of `Base64.urlsafe_encode64`
https://bugs.ruby-lang.org/issues/13827

* Author: Soilent (Konstantin _)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: 
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
Improve performance of `Base64.urlsafe_encode64` by avoiding unnecessary memory allocations. This may seem insignificant, but for the web service I am working on this patch makes noticeable improvement.

### Benchmark

~~~ ruby
require 'benchmark/ips'
require 'base64'
require 'securerandom'

Benchmark.ips do |x|
  string = SecureRandom.bytes(128)

  x.report 'Base64.urlsafe_encode64' do |t|
    t.times { Base64.urlsafe_encode64(string) }
  end
end
~~~

### Before
                               
~~~
Base64.urlsafe_encode64                                                                   
                        559.355k ( 3.2%) i/s -      2.805M in   5.019239s               
~~~ 

### After

~~~
Base64.urlsafe_encode64
                        736.211k ( 2.5%) i/s -      3.721M in   5.057606s
~~~

### Patch

https://github.com/ruby/ruby/pull/1676



-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>