Cytoscape.js 的性能和布局

2024-04-12

我正在测试 Cytoscape.js 的渲染性能。

我的图表包含大约 5000 个节点和 5000 个边,没有 x、y 位置,使用 Cytoscape.js 的自动布局。但欧拉布局扩展在渲染完所有节点和边后需要花费超过15秒的时间,在下次操作时图形页面的浏览器会卡住一段时间或响应缓慢。正如所说,Cytoscape.js 受到浏览器性能的限制。我们从java服务器客户端加载json数据,并使用for循环加载数据,然后使用layout.run()来运行自动布局。如何利用大数据提升性能?

具有 x,y 位置的数据会提高性能,对吧?但我们不知道如何在Java中循环x,y位置。能给我看看么? Cytoscape.js 中有用于布局的 java 插件吗?


Cytoscape.js 不可能用于实际的大数据(即太字节或更多),因为它在浏览器中运行。即使对于像 5000 个节点和边这样的中等大小,15 秒对于 Cytoscape.js 来说听起来很正常。

问题在于,JavaScript 在图形布局等任务中速度较慢,因为现代 CPU 具有越来越多的内核,并且 JavaScript 的并行实现(Web Worker)对于具有许多短迭代步骤(必须集成所有线程的结果)的算法来说有太多开销。另外,据我所知,GPU 计算在 JavaScript 中更难实现。

这两个问题都可能在未来得到解决,Cytoscape.js 的开发者 Max Franz 似乎非常积极和支持,因此,如果 JavaScript 获得更好的并行化和 GPU 计算支持,我相信这会找到解决办法Cytoscape.js 很快。

现在您可以尝试一些解决方法:

  • 图表总是一样吗?然后,您可以预先计算布局并将其加载为预设布局。
  • 图表至少不经常变化吗?然后您可以缓存布局并仅在必要时重新计算它。

我不知道你所说的“循环Java中的x,y位置”是什么意思,你的意思是“在JavaScript(!)库Cytoscape.js中加载预设布局”吗?如果是这样,这里解释一下:http://js.cytoscape.org/#layouts/preset http://js.cytoscape.org/#layouts/preset。具体来说,您定义 x 和 y 坐标,如下所示:

let options = {
  name: 'preset',
  positions: ... // map of (node id) => (position obj); or function(node){ return somPos; }
...

还有一些图形可视化的功能比 Cytoscape.js 少得多,但速度更快,因此如果您不需要任何功能并且只想可视化简单的图形,您可以尝试ngraph https://github.com/anvaka/ngraph,请参阅演示http://www.yasiv.com/graphs#Bai/rw5151 http://www.yasiv.com/graphs#Bai/rw5151.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cytoscape.js 的性能和布局 的相关文章

  • 在 C/C++ 中获得正模数的最快方法

    通常在我的内部循环中 我需要以 环绕 方式索引数组 因此 例如 如果数组大小为 100 并且我的代码要求元素 2 则应该给它元素 98 高级语言 例如 Python 可以简单地使用my array index array size 但由于某
  • 降低Python中的浮点精度以提高性能[重复]

    这个问题在这里已经有答案了 我正在树莓派上使用 python 我使用互补滤波器从陀螺仪中获得更好的值 但它消耗了太多树莓派的电量 大约为 70 我认为可以通过降低浮点精度来提高性能 现在 结果大约有 12 位小数 这超出了我的需要 有什么办
  • JavaFX 中 WebView 的性能

    我有一个 HTML5 UI 和一个 Java 后端 并且希望避免在纯 java 中重建 HTML ui 所以我的想法是运行本地 Web 服务器并使用 WebView 在 本机 窗口中呈现它 解决方案似乎是使用可以嵌入到 swing 中的 J
  • Pandas hub_table 更快的替代品

    我正在使用熊猫pivot table在大型数据集 1000 万行 6 列 上运行 由于执行时间至关重要 因此我尝试加快流程 目前 处理整个数据集大约需要 8 秒 这太慢了 我希望找到替代方案来提高速度 性能 我当前的 Pandas 数据透视
  • 迭代列表的奇怪速度差异

    我创建了两个重复两个不同值的长列表 在第一个列表中 值交替出现 在第二个列表中 一个值出现在另一个值之前 a1 object object 10 6 a2 a1 2 a1 1 2 然后我迭代它们 不对它们执行任何操作 for in a1 p
  • Rails Windows Vagrant 响应时间非常慢

    我在跑 Vagrant 1 7 1 Rails 4 1 4 Thin 1 6 1 Windows 7 每个静态文件的发送时间都超过一秒 在我的 PC 上加载一个页面可能需要大约 20 秒 而在同事的 Linux 机器上则只需瞬间 有一些帖子
  • 添加冗余赋值可以在未经优化的情况下编译时加快代码速度

    我发现一个有趣的现象 include
  • 使用 FileInputStream 时如何确定理想的缓冲区大小?

    我有一个从文件创建 MessageDigest 哈希 的方法 我需要对很多文件 gt 100 000 执行此操作 用于读取文件的缓冲区应该设置多大才能最大限度地提高性能 大多数人都熟悉基本代码 为了以防万一 我将在这里重复一遍 Messag
  • 使用 g++ 5.3.1 编译的程序运行速度比使用 g++ 4.8.4 编译的相同程序慢 3 倍,相同的命令

    最近 我开始使用 Ubuntu 16 04 和 g 5 3 1 并检查我的程序是否运行慢3倍 在此之前我使用过 Ubuntu 14 04 g 4 8 4 我用相同的命令构建它 CFLAGS std c 11 Wall O3 我的程序包含循环
  • R、Rcpp 与 Armadillo 中矩阵 rowSums() 与 colSums() 的效率

    背景 来自 R 编程 我正在扩展到 C C 形式的编译代码Rcpp 作为循环交换 以及一般的 C C 效果的实践练习 我实现了 R 的等效项rowSums and colSums 矩阵的函数Rcpp 我知道它们以 Rcpp 糖的形式存在 并
  • 独立滚动矩阵的行

    我有一个矩阵 准确地说 是 2d numpy ndarray A np array 4 0 0 1 2 3 0 0 5 我想滚动每一行A根据另一个数组中的滚动值独立地 r np array 2 0 1 也就是说 我想这样做 print np
  • 检查两个数是否是彼此的排列?

    给定两个数字 a b 使得 1 例如 123 是 312 的有效排列 我也不想对数字中的数字进行排序 如果您指的是数字的字符 例如 1927 和 9721 则 至少 有几种方法 如果允许排序 一种方法是简单地sprintf将它们放入两个缓冲
  • 我可以让这个 Ruby 代码更快并且/或使用更少的内存吗?

    我有一个Array of StringRuby 中的对象由如下单词组成 animals cat horse dog cat dog bird dog sheep chicken cow 我想将其转换为另一个Array of String对象
  • 如何提高包含大量小图像的 UCollectionView 的性能?

    在我的 iOS 应用程序中我有UICollectionView显示大约 1200 个小 35x35 点 图像 图像存储在应用程序包中 我正确地重用了UICollectionViewCell但仍然存在性能问题 具体取决于我处理图像加载的方式
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 正则表达式库基准

    我最近一直想知道正则表达式实现的性能 并且很难想出很多有用的信息 它很容易对浏览器 javascript 正则表达式性能进行基准测试 网上有很多工具 Chrome 和 Opera 中的 javascript 正则表达式实现几乎摧毁了所有其他
  • 为什么同样的算法在 Scala 中运行比在 C# 中慢得多?以及如何让它更快?

    该算法根据序列中每个成员的变体创建序列的所有可能变体 C 代码 static void Main string args var arg new List
  • TypeScript 编译速度极慢 > 12 秒

    只是把它放在那里看看其他人是否也遇到这个问题 我已经使用 webpack 作为我的构建工具 使用 typescript 构建了一个 Angular 2 应用程序 一切都运行良好 但是我注意到 typescript 编译超级超级慢 我现在只有
  • 比较两个 numpy 数组的最快方法

    我有两个数组 gt gt gt import numpy as np gt gt gt a np array 2 1 3 3 3 gt gt gt b np array 1 2 3 3 3 无论顺序如何 比较这两个数组的元素是否相等的最快方
  • Android Drawable 绘图性能?

    在我看来 我有一个简单的 ARGB 可绘制对象 大约需要 2 毫秒才能绘制 但我可以在 0 5 毫秒内绘制与位图相同的文件 只是一些快速代码 我真的不能认为它是一个选项 优化可绘制对象的绘制速度的最佳方法是什么 这取决于可绘制的数量以及每个

随机推荐

  • 带有 SVG 图像数据 URI 的背景图像中的 SCSS 变量

    在下面的SCSS中 我想使用fg color内的变量url background image属性 fg color ff6464 i icon back background image url data image svg xml cha
  • NGINX 添加两个变量/参数编号

    我正在尝试设置一个 Nginx 我想在其中将两个数字相加 server server name pr d review apps example com location set port 50000 1 proxy pass http l
  • 奇怪的旋转器。如何修复它?

    这是我填充微调器的代码 它看起来很奇怪而且丑陋 Override protected void onPostExecute final List
  • 忽略 ggplot2 geom_violin 中的异常值

    有没有办法忽略异常值geom violiny 轴图是否与 Q1 和 Q3 分位数相关 range 1 5以 R 为基数 如果这可以自动化 即不只是调用特定的 y 轴限制 那就太好了 我在这里看到使用 geom boxplot 的解决方案 忽
  • 在 GDI+ 中调整大小时出现幽灵边框(“响铃”)

    发生的情况 仅在某些图像上明显 是我会看到一个 1 像素白色边框 该边框插入一个像素 它似乎发生在明亮但不白色的区域 例如天空 这类似于某些东西过度锐化并且在高对比度边缘旁边可以看到重影边界 这是完美重现它的重现代码 我正在使用所有最高质量
  • 设置日期选择器的默认日期格式?

    我有一个页面可以跟踪各种日期 所以我最终通过 jquery 使用 datepicker 10 200 次 我想将日期选择器的所有情况的默认设置为 yy mm dd 但我似乎不知道如何设置 我最终通过 jquery 使用 datepicker
  • 从 .txt C 读取

    我在C语言方面遇到了一些麻烦 我有一个 txt 文件 其中包含以下形式的各行 F 65 S 4 1 139 56 3704 26 和我的程序 p fopen dados txt r if p NULL printf n nNao foi p
  • 保存EditText并自动检索

    您好 我正在尝试将 EditText 小部件值保存在手机 平板电脑的内部存储器中 以便应用程序关闭或活动停止时可以自动检索它们 所有这些都可以使用保存按钮进行 小部件的值由用户输入 您应该使用共享首选项 共享首选项用于将数据存储在本地应用程
  • 以非 root 用户身份使用 libusb-1.0 访问 USB 设备

    我正在尝试以 RHEL5 上的非 root 用户身份连接 USB 设备 该设备是一个 GPIO 接口 其文档可以在http www xdimax com sub20 sub20 html http www xdimax com sub20
  • Rails c 无法在 Rails 5 中工作

    关于在 Rails 5 应用程序内的终端中使用命令 rails c 抛出的错误如下所示 我不知道这在类似问题中意味着什么 解决方案是使用弹簧停止 我也尝试过 但没有 它仍然给出相同的错误 如果有人能指出这里的错误 那就太好了 Running
  • Hibernate:如何按id升序选择最后N行? (在单个查询中)

    休眠版本 5 2 我正在尝试使用子查询来做 并使用setMaxResults int session createQuery FROM SELECT FROM tickets ORDER BY id DESC limit 3 sub ORD
  • html5 canvas 游戏 - 如何添加视网膜支持

    我正在为 iPhone 创建 HTML5 画布游戏 我想支持视网膜和非视网膜显示器 我的问题是 如何同时支持视网膜和非视网膜显示器 即 执行此操作的一般实现是什么 我是否使用 iPhone 尺寸编写游戏 然后添加视网膜支持 或者我是否创建游
  • Dynamodb - 更新对象数组中 JSON 对象的值

    以下是存储在 DynamoDb 中的示例项目对象 记录 我使用 NodeJS 和AWS DynamoDB DocumentClient访问数据库 我正在构建一个 PUT 函数来更新数组中 JSON 对象的状态 该函数将有权访问该项目的uui
  • 在 Apache 中使用 mod_rewrite 处理中文字符

    我无法找到有关使用中文字符的 Apache mod rewriting 的信息 我能找到的所有信息都与数字有关 我想重写 character php character 宠 其中字符是搜索结果 因此会有所不同 character 宠 这是我
  • 共享主机帐户中的 php.ini 配置更改

    我尝试使用 htaccess ini set 覆盖默认的 php ini 配置 但在执行脚本时配置没有得到反映 这里 PHP 安装为 fastcgi 并位于共享托管帐户中 有什么方法可以更改 php ini 设置 或者我需要将我的帐户升级到
  • Rails 2.3:如何将此 SQL 语句转换为named_scope

    弄清楚如何从这个 SQL 查询创建一个named scope 有点困难 select from foo where id NOT IN select foo id from bar AND foo category ORDER BY RAN
  • mysql如何连接两个表?

    我有两张桌子 services id client service and clients id name email 如何列出餐桌服务并汇总顾客餐桌上的顾客姓名 表中的客户服务字段有客户表中客户的id 我很感谢你现在的帮助 SELECT
  • 是否可以从maven编译grunt项目?

    我正在尝试从 Maven 中执行 grunt 任务 而不需要安装 Node js 或任何东西 这是因为我不希望 Jenkins 打包我的工件 并且我无法在那台机器上安装 Node js 我知道使用 npm 和一些命令就可以让它工作很容易 但
  • 如何使用 Java 将 JMS 消息排入 Oracle AQ 中

    我有一个队列类型为 SYS AQ JMS TEXT MESSAGE 的 Oracle AQ 我想做的是将文本从 java 应用程序插入到提到的队列中 等效的 SQL 查询是 declare r enqueue options DBMS AQ
  • Cytoscape.js 的性能和布局

    我正在测试 Cytoscape js 的渲染性能 我的图表包含大约 5000 个节点和 5000 个边 没有 x y 位置 使用 Cytoscape js 的自动布局 但欧拉布局扩展在渲染完所有节点和边后需要花费超过15秒的时间 在下次操作