mirror of
https://github.com/chanzuckerberg/cellxgene.git
synced 2026-09-27 06: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;
|
||||
});
|
||||
|
||||
computePointSizesFromCrossfilter = memoize((len, crossfilter) => {
|
||||
const sizes = new Float32Array(len);
|
||||
crossfilter.fillByIsSelected(sizes, 4, 0.2);
|
||||
|
||||
return sizes;
|
||||
});
|
||||
|
||||
computePointSizes = memoize(
|
||||
(len, crossfilter, metadataField, categoryField) => {
|
||||
/*
|
||||
compute webgl dot size for each point
|
||||
*/
|
||||
|
||||
const sizes = new Float32Array(len);
|
||||
crossfilter.fillByIsSelected(sizes, 4, 0.2);
|
||||
const selectionSizes = this.computePointSizesFromCrossfilter(
|
||||
len,
|
||||
crossfilter
|
||||
);
|
||||
let sizes;
|
||||
|
||||
if (metadataField && categoryField) {
|
||||
sizes = selectionSizes.slice();
|
||||
const valuesArr = crossfilter.data.col(metadataField).asArray();
|
||||
|
||||
for (let i = 0; i < len; i += 1) {
|
||||
@@ -69,6 +80,8 @@ class Graph extends React.Component {
|
||||
sizes[i] = 10;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sizes = selectionSizes;
|
||||
}
|
||||
return sizes;
|
||||
}
|
||||
|
||||
@@ -19,12 +19,12 @@ const CentroidLabel = (state = initialState, action, sharedNextState) => {
|
||||
metadataField,
|
||||
categoryIndex,
|
||||
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,
|
||||
metadataField,
|
||||
categoryField,
|
||||
layoutChoice.currentDimNames
|
||||
)
|
||||
) */
|
||||
};
|
||||
|
||||
case "category value mouse hover end":
|
||||
|
||||
Reference in New Issue
Block a user