Optimize Post#{next,previous}

Use object equality for comparisons rather than Comparable#==,
which in turn uses Post#<=>, which is slow.

This yielded a 3x performance improvement for `jekyll build`
on a large site (1m6.467s -> 0m19.532s).
This commit is contained in:
John Firebaugh 2014-01-24 17:17:41 -08:00
parent b2c45aafdc
commit 4a769dbf5f
1 changed files with 2 additions and 3 deletions

View File

@ -271,8 +271,7 @@ module Jekyll
end end
def next def next
pos = self.site.posts.index(self) pos = self.site.posts.index {|post| post.equal?(self) }
if pos && pos < self.site.posts.length-1 if pos && pos < self.site.posts.length-1
self.site.posts[pos+1] self.site.posts[pos+1]
else else
@ -281,7 +280,7 @@ module Jekyll
end end
def previous def previous
pos = self.site.posts.index(self) pos = self.site.posts.index {|post| post.equal?(self) }
if pos && pos > 0 if pos && pos > 0
self.site.posts[pos-1] self.site.posts[pos-1]
else else