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.
This commit is contained in:
Kevin Sawicki
2014-01-07 16:39:50 -08:00
parent 9d6a01d11c
commit cf47ee5063

View File

@@ -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,