From 8f6dbf21927e26a8a36eab9ac81f5671faee8131 Mon Sep 17 00:00:00 2001 From: Alexander Rose <alexander.rose@weirdbyte.de> Date: Tue, 31 Aug 2021 21:14:02 -0700 Subject: [PATCH] asorted performance tweaks --- src/mol-data/int/impl/sorted-array.ts | 5 +++-- src/mol-geo/geometry/marker-data.ts | 2 +- src/mol-model/structure/structure/element/loci.ts | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/mol-data/int/impl/sorted-array.ts b/src/mol-data/int/impl/sorted-array.ts index 38144716e..1e857f27b 100644 --- a/src/mol-data/int/impl/sorted-array.ts +++ b/src/mol-data/int/impl/sorted-array.ts @@ -60,10 +60,11 @@ export function getAt(xs: Nums, i: number) { return xs[i]; } export function areEqual(a: Nums, b: Nums) { if (a === b) return true; - const aSize = a.length; + let aSize = a.length; if (aSize !== b.length || a[0] !== b[0] || a[aSize - 1] !== b[aSize - 1]) return false; if (isRange(a)) return true; - for (let i = 0; i < aSize; i++) { + aSize--; + for (let i = 1; i < aSize; i++) { if (a[i] !== b[i]) return false; } return true; diff --git a/src/mol-geo/geometry/marker-data.ts b/src/mol-geo/geometry/marker-data.ts index 71a375db9..0a99554b5 100644 --- a/src/mol-geo/geometry/marker-data.ts +++ b/src/mol-geo/geometry/marker-data.ts @@ -21,7 +21,7 @@ export function getMarkersAverage(array: Uint8Array, count: number): number { if (count === 0) return 0; let sum = 0; for (let i = 0; i < count; ++i) { - sum += +!!array[i]; + sum += array[i] && 1; } return sum / count; } diff --git a/src/mol-model/structure/structure/element/loci.ts b/src/mol-model/structure/structure/element/loci.ts index cb68abbdd..2bd638ec6 100644 --- a/src/mol-model/structure/structure/element/loci.ts +++ b/src/mol-model/structure/structure/element/loci.ts @@ -470,7 +470,7 @@ export namespace Loci { } function getUnitIndices(elements: SortedArray<ElementIndex>, indices: SortedArray<ElementIndex>) { - if (SortedArray.areEqual(elements, indices) && SortedArray.isRange(elements)) { + if (SortedArray.isRange(elements) && SortedArray.areEqual(elements, indices)) { return Interval.ofLength(elements.length); } return makeIndexSet(SortedArray.indicesOf<ElementIndex, UnitIndex>(elements, indices)); -- GitLab