Skip to content

Commit 608337e

Browse files
authored
Merge pull request #5659 from spasovski/perf-issue
cache values and patterns in set_convert for rangebreaked axis
2 parents f7806b2 + d8a4a71 commit 608337e

File tree

1 file changed

+18
-5
lines changed

1 file changed

+18
-5
lines changed

src/plots/cartesian/set_convert.js

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -600,16 +600,29 @@ module.exports = function setConvert(ax, fullLayout) {
600600
var rangebreaksIn = ax.rangebreaks || [];
601601
var bnds, b0, b1, vb, vDate;
602602

603+
604+
if(!rangebreaksIn._cachedPatterns) {
605+
rangebreaksIn._cachedPatterns = rangebreaksIn.map(function(brk) {
606+
return brk.enabled && brk.bounds ? Lib.simpleMap(brk.bounds, brk.pattern ?
607+
cleanNumber :
608+
ax.d2c // case of pattern: ''
609+
) : null;
610+
});
611+
}
612+
if(!rangebreaksIn._cachedValues) {
613+
rangebreaksIn._cachedValues = rangebreaksIn.map(function(brk) {
614+
return brk.enabled && brk.values ? Lib.simpleMap(brk.values, ax.d2c).sort(Lib.sorterAsc) : null;
615+
});
616+
}
617+
618+
603619
for(var i = 0; i < rangebreaksIn.length; i++) {
604620
var brk = rangebreaksIn[i];
605621

606622
if(brk.enabled) {
607623
if(brk.bounds) {
608624
var pattern = brk.pattern;
609-
bnds = Lib.simpleMap(brk.bounds, pattern ?
610-
cleanNumber :
611-
ax.d2c // case of pattern: ''
612-
);
625+
bnds = rangebreaksIn._cachedPatterns[i];
613626
b0 = bnds[0];
614627
b1 = bnds[1];
615628

@@ -653,7 +666,7 @@ module.exports = function setConvert(ax, fullLayout) {
653666

654667
if(vb >= b0 && vb < b1) return BADNUM;
655668
} else {
656-
var vals = Lib.simpleMap(brk.values, ax.d2c).sort(Lib.sorterAsc);
669+
var vals = rangebreaksIn._cachedValues[i];
657670
for(var j = 0; j < vals.length; j++) {
658671
b0 = vals[j];
659672
b1 = b0 + brk.dvalue;

0 commit comments

Comments
 (0)