Project

General

Profile

Actions

Patch #31059

closed

Use #b shortcut instead of #force_encoding

Added by Pavel Rosický about 5 years ago. Updated about 5 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Code cleanup/refactoring
Target version:
Start date:
Due date:
% Done:

0%

Estimated time:

Description

follow up for #26561

this patch replaces all .force_encoding('ASCII-8BIT') or .force_encoding('BINARY') to .b

String#b is available since Ruby 2.0
https://www.rubydoc.info/stdlib/core/2.0.0/String%3ab

#b returns unfrozen string so + can be omited, this way the code can be much shorter and it's even faster

# frozen-string-literal: true

require 'benchmark/ips'

def test_b
  'looooonghsalfhfslakfsalhsfalhfsalhfsalhfsa'.b
end

def test_force
  (+"looooonghsalfhfslakfsalhsfalhfsalhfsalhfsa").force_encoding('ASCII-8BIT')
end

Benchmark.ips do |x|
  x.report('b', 'test_b')
  x.report('force', 'test_force')
end
Warming up --------------------------------------
                   b   278.357k i/100ms
               force   191.903k i/100ms
Calculating -------------------------------------
                   b      8.628M (± 6.3%) i/s -     43.145M in   5.023695s
               force      3.888M (± 7.9%) i/s -     19.382M in   5.021761s

Files

core.patch (6.54 KB) core.patch Pavel Rosický, 2019-03-19 18:39
tests.patch (7.77 KB) tests.patch Pavel Rosický, 2019-03-19 18:39
core.patch (6.51 KB) core.patch v2 Pavel Rosický, 2019-03-19 23:45
tests.patch (7.77 KB) tests.patch v2 Pavel Rosický, 2019-03-19 23:45

Related issues

Related to Redmine - Feature #26561: Enable frozen string literalsClosedGo MAEDA

Actions
Actions

Also available in: Atom PDF