javascript - 如何计算 svg 元素以在 javascript 中进行性能调整
问题描述
我有一个 javascript Web 应用程序,它可以动态地为 SVG 中的各种数据集绘制图形+动画,并且想要进行一些性能调整,因为可能有数千个 SVG 元素。我正在寻找可见或重要元素的计数以进行比较。我的工作但粗略的第一次尝试如下。希望至少通过每个 SVG 元素而不是文档范围的 document.getElementsByTagName() 调用来获取计数。
let svgs = document.getElementsByTagName("svg"),
totalChildren = 0,
childCounts = [];
for( let i=0; i<svgs.length; i++ ){
let svg = svgs[i];
totalChildren += svg.childElementCount;
childCounts.push( svg.childElementCount );
}
let tags = [ "clipPath", "circle", "rect", "path", "text" ],
tagMessage = "";
tags.forEach( tagName => {
tagMessage += ( document.getElementsByTagName(tagName).length + " ");
});
console.log( 'SVG element counts are: totalChildren='+ totalChildren, " SVG childElementCounts:", childCounts, " by tag:", tagMessage + tags );
样本输出:
SVG 元素计数为:totalChildren=2721 SVG childElementCounts: (6) [1312, 5, 30, 4, 4, 1366] by tag: 1313 1317 2673 21 11 clipPath,circle,rect,path,text
解决方案
推荐阅读
- arrays - 为什么 Join() 需要一个 1-dim Long 数组的双重转置?
- vue.js - Vue - 我应该在哪里声明元素变量以在任何生命周期或方法中使用?
- mysql - 检索具有最大值mysql的行
- c# - 是否可以在同一个 Viewbag 变量上传递多个值?
- corda - Corda 可调度状态导致流测试挂起
- javascript - 等待量角器与页面同步时出错:“angularJS 可测试性和 Angular 可测试性都未定义
- ubuntu - Caffe 编译错误 - 虚拟框中的 Ubuntu 18.04.4 Live Server
- python-3.x - 从点生成二维网格文件
- mysql - 获取 MYSQL 中当年一月的记录
- chef-infra - 如何找到将食谱上传到厨师服务器的作者?