From cf47ee506326a8023fa3610b60bb0318900a50db Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Tue, 7 Jan 2014 16:39:50 -0800 Subject: [PATCH] Only call _.isEqual when needed Invert the logic to return if all are equal so we can fall through on the first false call so only the minimum isEqual calls are made. Also perform the boolean check first instead of last since it cheaper than a Point comparison. This showed up in the profile when profiling moving the cursor. --- src/display-buffer-marker.coffee | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/display-buffer-marker.coffee b/src/display-buffer-marker.coffee index 05f5d67b3..1bbd6633e 100644 --- a/src/display-buffer-marker.coffee +++ b/src/display-buffer-marker.coffee @@ -185,13 +185,11 @@ class DisplayBufferMarker newTailScreenPosition = @getTailScreenPosition() isValid = @isValid() - changed = false - changed = true unless _.isEqual(newHeadBufferPosition, @oldHeadBufferPosition) - changed = true unless _.isEqual(newHeadScreenPosition, @oldHeadScreenPosition) - changed = true unless _.isEqual(newTailBufferPosition, @oldTailBufferPosition) - changed = true unless _.isEqual(newTailScreenPosition, @oldTailScreenPosition) - changed = true unless _.isEqual(isValid, @wasValid) - return unless changed + return if _.isEqual(isValid, @wasValid) and + _.isEqual(newHeadBufferPosition, @oldHeadBufferPosition) and + _.isEqual(newHeadScreenPosition, @oldHeadScreenPosition) and + _.isEqual(newTailBufferPosition, @oldTailBufferPosition) and + _.isEqual(newTailScreenPosition, @oldTailScreenPosition) @emit 'changed', { @oldHeadScreenPosition, newHeadScreenPosition,