Skip to content

Commit 6f007d7

Browse files
committed
Use != and == over nonzero? and zero? in hot code paths for better speed
This optimization is slightly faster.
1 parent c6e6262 commit 6f007d7

File tree

4 files changed

+4
-4
lines changed

4 files changed

+4
-4
lines changed

lib/protobuf/field/integer_field.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class IntegerField < VarintField
99
#
1010

1111
def decode(value)
12-
value -= 0x1_0000_0000_0000_0000 if (value & 0x8000_0000_0000_0000).nonzero?
12+
value -= 0x1_0000_0000_0000_0000 if (value & 0x8000_0000_0000_0000) != 0
1313
value
1414
end
1515

lib/protobuf/field/sfixed32_field.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class Sfixed32Field < Int32Field
1010

1111
def decode(bytes)
1212
value = bytes.unpack('V').first
13-
value -= 0x1_0000_0000 if (value & 0x8000_0000).nonzero?
13+
value -= 0x1_0000_0000 if (value & 0x8000_0000) != 0
1414
value
1515
end
1616

lib/protobuf/field/sfixed64_field.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ class Sfixed64Field < Int64Field
1111
def decode(bytes)
1212
values = bytes.unpack('VV') # 'Q' is machine-dependent, don't use
1313
value = values[0] + (values[1] << 32)
14-
value -= 0x1_0000_0000_0000_0000 if (value & 0x8000_0000_0000_0000).nonzero?
14+
value -= 0x1_0000_0000_0000_0000 if (value & 0x8000_0000_0000_0000) != 0
1515
value
1616
end
1717

lib/protobuf/field/signed_integer_field.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class SignedIntegerField < VarintField
99
#
1010

1111
def decode(value)
12-
if (value & 1).zero?
12+
if (value & 1) == 0
1313
value >> 1 # positive value
1414
else
1515
~value >> 1 # negative value

0 commit comments

Comments
 (0)