improve performance around category highlighting (#849)

* remove function call and add comment

* separate crossfilter size calc into memoized function
This commit is contained in:
Severiano Badajoz
2019-07-15 16:00:23 -07:00
committed by GitHub
parent e199b14259
commit 3d6bb88556
2 changed files with 17 additions and 4 deletions
+15 -2
View File
@@ -52,16 +52,27 @@ class Graph extends React.Component {
return colors; return colors;
}); });
computePointSizesFromCrossfilter = memoize((len, crossfilter) => {
const sizes = new Float32Array(len);
crossfilter.fillByIsSelected(sizes, 4, 0.2);
return sizes;
});
computePointSizes = memoize( computePointSizes = memoize(
(len, crossfilter, metadataField, categoryField) => { (len, crossfilter, metadataField, categoryField) => {
/* /*
compute webgl dot size for each point compute webgl dot size for each point
*/ */
const sizes = new Float32Array(len); const selectionSizes = this.computePointSizesFromCrossfilter(
crossfilter.fillByIsSelected(sizes, 4, 0.2); len,
crossfilter
);
let sizes;
if (metadataField && categoryField) { if (metadataField && categoryField) {
sizes = selectionSizes.slice();
const valuesArr = crossfilter.data.col(metadataField).asArray(); const valuesArr = crossfilter.data.col(metadataField).asArray();
for (let i = 0; i < len; i += 1) { for (let i = 0; i < len; i += 1) {
@@ -69,6 +80,8 @@ class Graph extends React.Component {
sizes[i] = 10; sizes[i] = 10;
} }
} }
} else {
sizes = selectionSizes;
} }
return sizes; return sizes;
} }
+2 -2
View File
@@ -19,12 +19,12 @@ const CentroidLabel = (state = initialState, action, sharedNextState) => {
metadataField, metadataField,
categoryIndex, categoryIndex,
categoryField, categoryField,
centroidXY: calcCentroid( centroidXY: null /* calcCentroid( This function call is computationally heavy and also leading to large GC. Before reimplementation, look into optimization and memoization
world, world,
metadataField, metadataField,
categoryField, categoryField,
layoutChoice.currentDimNames layoutChoice.currentDimNames
) ) */
}; };
case "category value mouse hover end": case "category value mouse hover end":