]> git.ipfire.org Git - thirdparty/moment.git/commitdiff
Performance optimization isBefore/isAfter/isSame
authorDominik Hurnaus <dominik.hurnaus@gmail.com>
Tue, 26 Aug 2014 13:11:16 +0000 (15:11 +0200)
committerIskren Chernev <iskren.chernev@gmail.com>
Fri, 5 Sep 2014 04:55:43 +0000 (21:55 -0700)
- 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

index d49dee6062e99550dfe0625ebe9fd375e3f42d00..432c0aec1e60109ed7630163fcbf7ff8d31d745e 100644 (file)
--- a/moment.js
+++ b/moment.js
         },
 
         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(