From c1134c733818bef2c0ae828c9bd3756ca3425216 Mon Sep 17 00:00:00 2001 From: Dominik Hurnaus Date: Tue, 26 Aug 2014 15:11:16 +0200 Subject: [PATCH] Performance optimization isBefore/isAfter/isSame - optimized performance of isBefore/isAfter/isSame by using valueOf and not momentizing/cloning already existing moment objects - 90% performance improvement when using without specific unit and the input is already a moment object reviewed by PatrickBic/tscheinecker --- moment.js | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/moment.js b/moment.js index d49dee606..432c0aec1 100644 --- a/moment.js +++ b/moment.js @@ -2279,18 +2279,33 @@ }, isAfter: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) > +moment(input).startOf(units); + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this > +input; + } else { + return +this.clone().startOf(units) > +moment(input).startOf(units); + } }, isBefore: function (input, units) { - units = typeof units !== 'undefined' ? units : 'millisecond'; - return +this.clone().startOf(units) < +moment(input).startOf(units); + units = normalizeUnits(typeof units !== 'undefined' ? units : 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this < +input; + } else { + return +this.clone().startOf(units) < +moment(input).startOf(units); + } }, isSame: function (input, units) { - units = units || 'ms'; - return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); + units = normalizeUnits(units || 'millisecond'); + if (units === 'millisecond') { + input = moment.isMoment(input) ? input : moment(input); + return +this === +input; + } else { + return +this.clone().startOf(units) === +makeAs(input, this).startOf(units); + } }, min: deprecate( -- 2.47.3