1

有人对提高 Rappid 的性能有什么建议吗?

它必须在 IE 中运行(其执行速度比 Chrome 慢 10 倍)。加载具有 1000 个正方形和 1000 个连接器的图形需要215s

我的代码没有任何花哨的东西,我只是从 JSON 文件加载图形:

graph.fromJSON(JSON.parse(input));

我的论文设置为async = true,这提供了很大的提升。从 JSON 加载似乎比以编程方式创建所有节点要快得多。

我在这里尝试了这些建议: https : //groups.google.com/forum/#!topic/jointjs/dbdOrINRG8o 但我根本无法让 FastPaper 在 IE 中工作。

4

1 回答 1

0

只渲染可见元素可以帮助你很多,但它不是免费的......

graph.fromJSON(JSON.parse(input));将所有单元格导入图表,paper检测此更改并开始渲染。此时,您在图中拥有所有具有位置和大小的单元格,以及视口(可见区域)。现在您需要过滤当前在视口中的元素并仅渲染它们。

  • 获取视口:var viewport = paperScroller.getVisibleArea()
  • 获取视口中的元素:graph.findModelsInArea(viewport)

然后,您需要扩展dia.Paper和覆盖该renderView方法。它应该如下所示:

joint.dia.PartialRenderPaper = joint.dia.Paper.extend({

    isVisible: function(cell) { 
        // detection logic
    },
    renderView: function(cell) {


        if (this.isVisible(cell) || cell.isLink()) {

             return joint.dia.Paper.prototype.renderView.apply(this, arguments);
        }

        return null;
    },

});
于 2016-11-08T15:18:27.593 回答