From: Dominik Hurnaus Date: Tue, 26 Aug 2014 13:11:16 +0000 (+0200) Subject: Performance optimization isBefore/isAfter/isSame X-Git-Tag: 2.8.3~10^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c1134c733818bef2c0ae828c9bd3756ca3425216;p=thirdparty%2Fmoment.git 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 --- 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(