From 4a769dbf5f683924a8ee3915701d7b96a4086007 Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Fri, 24 Jan 2014 17:17:41 -0800 Subject: [PATCH] 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). --- lib/jekyll/post.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/jekyll/post.rb b/lib/jekyll/post.rb index 49214615..edc5caae 100644 --- a/lib/jekyll/post.rb +++ b/lib/jekyll/post.rb @@ -271,8 +271,7 @@ module Jekyll end 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 self.site.posts[pos+1] else @@ -281,7 +280,7 @@ module Jekyll end def previous - pos = self.site.posts.index(self) + pos = self.site.posts.index {|post| post.equal?(self) } if pos && pos > 0 self.site.posts[pos-1] else