mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-10-09 05:58:11 +08:00
improve performance around category highlighting (#849)
* remove function call and add comment * separate crossfilter size calc into memoized function
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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":
|
||||||
|
|||||||
Reference in New Issue
Block a user