mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-17 01:40:42 -07:00
Condition#evaluate: skip loop block for simple conditions (no child_relation) — saves 235 allocs\n\nResult: {"status":"keep","combined_µs":3445,"parse_µs":2284,"render_µs":1161,"allocations":24647}
This commit is contained in:
@@ -65,11 +65,13 @@ module Liquid
|
||||
end
|
||||
|
||||
def evaluate(context = deprecated_default_context)
|
||||
condition = self
|
||||
result = nil
|
||||
loop do
|
||||
result = interpret_condition(condition.left, condition.right, condition.operator, context)
|
||||
result = interpret_condition(@left, @right, @operator, context)
|
||||
|
||||
# Fast path: no child conditions (most common)
|
||||
return result unless @child_relation
|
||||
|
||||
condition = self
|
||||
loop do
|
||||
case condition.child_relation
|
||||
when :or
|
||||
break if Liquid::Utils.to_liquid_value(result)
|
||||
@@ -79,6 +81,7 @@ module Liquid
|
||||
break
|
||||
end
|
||||
condition = condition.child_condition
|
||||
result = interpret_condition(condition.left, condition.right, condition.operator, context)
|
||||
end
|
||||
result
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user