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