Extract and optimize virtual path building

Before:  build      1.759M (± 0.4%) i/s -      8.855M in   5.034065s
After:   build      2.700M (± 0.8%) i/s -     13.584M in   5.031691s
This commit is contained in:
John Hawthorn 2021-04-20 16:23:22 -07:00
parent adc0146a07
commit 7faa50cb32

@ -15,11 +15,18 @@ class Path
attr_reader :name, :prefix, :partial, :virtual
alias_method :partial?, :partial
def self.virtual(name, prefix, partial)
if prefix.empty?
"#{partial ? "_" : ""}#{name}"
elsif partial
"#{prefix}/_#{name}"
else
"#{prefix}/#{name}"
end
end
def self.build(name, prefix, partial)
virtual = +""
virtual << "#{prefix}/" unless prefix.empty?
virtual << (partial ? "_#{name}" : name)
new name, prefix, partial, virtual
new name, prefix, partial, virtual(name, prefix, partial)
end
def initialize(name, prefix, partial, virtual)