Skip to content

Commit 7cb89fc

Browse files
Copilotstreamich
andcommitted
Revert performance-impacting changes: restore ~~ and x !== x patterns for optimal code size
Co-authored-by: streamich <9773803+streamich@users.noreply.github.com>
1 parent 8e1b06a commit 7cb89fc

File tree

3 files changed

+12
-15
lines changed

3 files changed

+12
-15
lines changed

src/json-crdt/model/api/nodes.ts

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,10 @@ export class NodeApi<N extends JsonNode = JsonNode> implements Printable {
234234
if (typeof key === 'number') index = key;
235235
else if (key === '-') index = length;
236236
else {
237-
index = Math.trunc(Number(key));
237+
index = ~~key;
238238
if (index + '' !== key) break ADD;
239239
}
240-
if (Number.isNaN(index)) break ADD;
240+
if (index !== index) break ADD;
241241
if (index < 0) index = 0;
242242
if (index > length) index = length;
243243
if (node instanceof ArrApi) node.ins(index, Array.isArray(value) ? value : [value]);
@@ -247,7 +247,7 @@ export class NodeApi<N extends JsonNode = JsonNode> implements Printable {
247247
node.ins(index, value);
248248
}
249249
} else if (node instanceof VecApi) {
250-
node.set([[Math.trunc(Number(key)), value]]);
250+
node.set([[~~key, value]]);
251251
} else break ADD;
252252
return true;
253253
} catch {}
@@ -267,13 +267,13 @@ export class NodeApi<N extends JsonNode = JsonNode> implements Printable {
267267
let index: number = 0;
268268
if (typeof key === 'number') index = key;
269269
else {
270-
index = Math.trunc(Number(key));
270+
index = ~~key;
271271
if (index + '' !== key) break REPLACE;
272272
}
273-
if (Number.isNaN(index) || index < 0 || index > length) break REPLACE;
273+
if (index !== index || index < 0 || index > length) break REPLACE;
274274
if (index === length) node.ins(index, [value]);
275275
else node.upd(index, value);
276-
} else if (node instanceof VecApi) node.set([[Math.trunc(Number(key)), value]]);
276+
} else if (node instanceof VecApi) node.set([[~~key, value]]);
277277
else break REPLACE;
278278
return true;
279279
} catch {}
@@ -294,13 +294,13 @@ export class NodeApi<N extends JsonNode = JsonNode> implements Printable {
294294
if (typeof key === 'number') index = key;
295295
else if (key === '-') index = length;
296296
else {
297-
index = Math.trunc(Number(key));
297+
index = ~~key;
298298
if (index + '' !== key) break REMOVE;
299299
}
300-
if (Number.isNaN(index) || index < 0 || index > len) break REMOVE;
300+
if (index !== index || index < 0 || index > len) break REMOVE;
301301
node.del(index, Math.min(length, len - index));
302302
} else if (node instanceof VecApi) {
303-
node.set([[Math.trunc(Number(key)), void 0]]);
303+
node.set([[~~key, void 0]]);
304304
} else break REMOVE;
305305
return true;
306306
} catch {}

src/util/strCnt.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ export const strCnt = (needle: string, haystack: string, offset: number = 0): nu
22
let cnt = 0;
33
const needleLen = needle.length;
44
if (needleLen === 0) return 0;
5-
let currentOffset = offset;
65
while (true) {
7-
const index = haystack.indexOf(needle, currentOffset);
6+
const index = haystack.indexOf(needle, offset);
87
if (index < 0) return cnt;
98
cnt++;
10-
currentOffset = index + needleLen;
9+
offset = index + needleLen;
1110
}
1211
};

src/util/throttle.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,7 @@ export const throttle = <F extends (...args: any[]) => void>(fn: F, ms: number =
1212
if (timer) return;
1313
timer = setTimeout(() => {
1414
timer = 0;
15-
if (lastArgs) {
16-
fn.apply(null, lastArgs);
17-
}
15+
fn.apply(null, lastArgs!);
1816
}, ms);
1917
}) as F;
2018
return [out, stop];

0 commit comments

Comments
 (0)