Okay, looking at your code, there's a few things you can optimize:
var s = chartObj.masterChart.series, // #1
sLength = s.length, // #2
chartMin = chartObj.RangeSelectedMinValue,
chartMax = chartObj.RangeSelectedMaxValue;
for (var series = 0; series < sLength; series++) {
var detailData = [],
data = s[series].data, // #3
length = data.length; // #2
for(var i = 0; i < length; i++){ // #4
var point = data[i];
if (point.x >= chartMin && point.x <= chartMax) {
detailData.push({
x: point.x,
y: point.y
});
}
}
chartObj.detailChart.series[series].setData(detailData);
}
- You're getting the same "deeper" object inside chartObj multiple times --> Assign it to a temporary variable;
- Don't calculate the length for every iteration of the loop. Same principle as #1
- Assign
s[series].data
to a temp var. This provides a direct pointer to the data instead of having to accesss[series].data
each iteration of the loop. Same principle as #1 - jQuery is slow. For a simple loop, use JavaScript instead, especially if you're looping through a massive object.
I'm not saying this edit will work miracles, but it should reduce the load a bit.