X Tutup
Skip to content

Commit 5c531f7

Browse files
committed
perf(RecordRange): optimize disable()
There could be no lastEnabledChildRecord when there is no firstEnabledChildRecord - saves time by skipping findLastEnabledRecord() when the result is know to be null, - saves a test as isPresent(lastEnabledChildRecord) == isPresent(firstEnabledChildRecord)
1 parent 27e0359 commit 5c531f7

File tree

2 files changed

+12
-15
lines changed

2 files changed

+12
-15
lines changed

modules/change_detection/src/change_detector.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export class ChangeDetector {
2323
var currentGroup = record.groupMemento();
2424

2525
if (record.check()) {
26-
count ++;
26+
count++;
2727
if (record.terminatesExpression()) {
2828
updatedRecords = this._addRecord(updatedRecords, record);
2929
}

modules/change_detection/src/record_range.js

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -57,11 +57,11 @@ export class ProtoRecordRange {
5757
if (this.recordCreator === null) {
5858
this.recordCreator = new ProtoRecordCreator(this);
5959
}
60-
60+
6161
if (content) {
6262
ast = new Collection(ast);
6363
}
64-
64+
6565
this.recordCreator.createRecordsFromAST(ast, expressionMemento, groupMemento);
6666
}
6767

@@ -149,14 +149,13 @@ export class RecordRange {
149149

150150
remove() {
151151
var firstEnabledChildRecord = this.findFirstEnabledRecord();
152-
var lastEnabledChildRecord = this.findLastEnabledRecord();
153-
154152
var next = this.tailRecord.next;
155153
var prev = this.headRecord.prev;
156154

157155
_link(prev, next);
158156

159157
if (isPresent(firstEnabledChildRecord)) {
158+
var lastEnabledChildRecord = this.findLastEnabledRecord();
160159
var nextEnabled = lastEnabledChildRecord.nextEnabled;
161160
var prevEnabled = firstEnabledChildRecord.prevEnabled;
162161
if (isPresent(nextEnabled)) nextEnabled.prevEnabled = prevEnabled;
@@ -191,16 +190,14 @@ export class RecordRange {
191190

192191
disable() {
193192
var firstEnabledChildRecord = this.findFirstEnabledRecord();
194-
var lastEnabledChildRecord = this.findLastEnabledRecord();
195-
196-
var nextEnabled = isPresent(lastEnabledChildRecord) ?
197-
lastEnabledChildRecord.nextEnabled : null;
198-
199-
var prevEnabled = isPresent(firstEnabledChildRecord) ?
200-
firstEnabledChildRecord.prevEnabled : null;
201-
202-
if (isPresent(nextEnabled)) nextEnabled.prevEnabled = prevEnabled;
203-
if (isPresent(prevEnabled)) prevEnabled.nextEnabled = nextEnabled;
193+
if (isPresent(firstEnabledChildRecord)) {
194+
// There could be a last enabled record only if first enabled exists
195+
var lastEnabledChildRecord = this.findLastEnabledRecord();
196+
var nextEnabled = lastEnabledChildRecord.nextEnabled;
197+
var prevEnabled = firstEnabledChildRecord.prevEnabled;
198+
if (isPresent(nextEnabled)) nextEnabled.prevEnabled = prevEnabled;
199+
if (isPresent(prevEnabled)) prevEnabled.nextEnabled = nextEnabled;
200+
}
204201

205202
this.disabled = true;
206203
}

0 commit comments

Comments
 (0)
X Tutup