После профилирования кода похоже, что функция bbox вызывается повторно. Я не могу удалить marker-source, marker-target и connection-wrap, потому что мне нужны эти функции. Есть ли способ улучшить производительность?
Как повысить производительность JointJS с большим количеством ссылок?
Ответы (1)
Попробуйте заменить marker-source
и marker-target
на маркеры SVG. Это относительно легко реализовать, если ваше приложение не требует разных размеров и цветов маркеров. Например:
- Определите свою собственную маркерную стрелку.
var arrowMarker = V('marker', {
viewBox: "0 0 10 10",
refX: 9,
refY: 5,
markerWidth: 6,
markerHeight: 6,
orient: "auto"
}, [
V('path', {
'd': "M 0 0 L 10 5 L 0 10 z",
'fill': 'green'
})
]);
- Добавьте маркер в SVG Defs документа, чтобы его можно было повторно использовать позже несколько раз.
V(paper.defs).append(arrowMarker);
- Наконец, поместите маркер на ссылку. Используйте
marker-end
илиmarker-start
для определенияtarget
соотв.source
маркер.
var link = new joint.dia.Link({
markup: '<path class="connection"/><path class="connection-wrap"/>',
attrs: {
'.connection': {
'stroke': 'green',
'stroke-width': 2,
'marker-end': 'url(#' + arrowMarker.attr('id') + ')'
}
}
});
Существует JSFiddle с примером и другими полезными советами по повышению производительности.
person
Roman
schedule
02.09.2016