多维表格/业务库表格大数据量性能瓶颈

2024-06-21 16:28

本文主要是介绍多维表格/业务库表格大数据量性能瓶颈,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先说最终结论:Angular 组件创建性能损耗是当下主要的性能瓶颈

理由:
基于以往编辑器性能优化的经验,编辑器在动态渲染内容时会创建很多壳子组件(也就是Angular 组件),排查的时候就发现如果略这些壳子组件性能可以有一倍的提升,所以有了对编辑器的一次大的性能优化 #TECHW-20 编辑器性能优化:使用 ListRender 渲染列表 ,核心就是自己写列表的渲染去掉中间的壳子组件。
排查业务组件库表格性能问题(styx-table),发现了同样的问题,就是在组件进入 reflow 之前会有很长一段时间的 js 的执行时间,300 条数据、9个字段 大概有 350ms 的纯脚本的执行时间,这 350ms 应该是 angular 组件创建的性能损耗。
v-table 上简单测试,渲染 240 行、30 个字段,各种场景下:

  1. 壳子组件(grid-cell)500ms
  2. 使用模版(ng-template)100ms
  3. 直接绑定 40ms

初步方案:
表格核心部分的渲染不基于 Angular 组件,而是基于原生 HTML 或者 WebComponent 组件(需要验证性能表现),这种方案的带来的问题是需要自己重写每一种字段的显示组件,无法复用组件库或者业务组件库组件,而单元格的编辑可以通过桥接、定位的方式复用业务组件库组件

测试表现:

在这里插入图片描述

<div class="grid-cell"><div class="text-column"><span class="d-block">{{ data.value }}</span></div>
</div>

模版

<ng-template #text let-data="data"><div class="grid-cell"><div class="text-column"><span class="d-block">{{ data.value }}</span></div></div><!-- <ng-template [ngTemplateOutlet]="text2" [ngTemplateOutletContext]="{ data }"></ng-template> -->
</ng-template>

模版套模版

<ng-template #text let-data="data"><!-- <div class="grid-cell"><div class="text-column"><span class="d-block">{{ data.value }}</span></div></div> --><ng-template [ngTemplateOutlet]="text2" [ngTemplateOutletContext]="{ data }"></ng-template>
</ng-template><ng-template #text2 let-data="data"><div class="grid-cell 22"><div class="text-column"><span class="d-block">{{ data.value }}</span></div></div>
</ng-template>

组件

<!-- 使用组件 -->
<v-table-text
[value]="data.value"
></v-table-text>
<!-- 内部模版 -->
<!-- <v-table-text2 value="{{value()}}"></v-table-text2> -->
<span class="d-block">{{ value() }}</span>

组件套组件

<!-- 使用组件 -->
<v-table-text
[value]="data.value"
></v-table-text>
<!-- 内部模版 -->
<v-table-text2 value="{{value()}}"></v-table-text2>
<!-- <span class="d-block">{{ value() }}</span> -->

模版套模版性能损甚至比组件套组件损耗大

这篇关于多维表格/业务库表格大数据量性能瓶颈的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1081731

相关文章

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

黑神话,XSKY 星飞全闪单卷性能突破310万

当下,云计算仍然是企业主要的基础架构,随着关键业务的逐步虚拟化和云化,对于块存储的性能要求也日益提高。企业对于低延迟、高稳定性的存储解决方案的需求日益迫切。为了满足这些日益增长的 IO 密集型应用场景,众多云服务提供商正在不断推陈出新,推出具有更低时延和更高 IOPS 性能的云硬盘产品。 8 月 22 日 2024 DTCC 大会上(第十五届中国数据库技术大会),XSKY星辰天合正式公布了基于星

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

业务协同平台--简介

一、使用场景         1.多个系统统一在业务协同平台定义协同策略,由业务协同平台代替人工完成一系列的单据录入         2.同时业务协同平台将执行任务推送给pda、pad等执行终端,通知各人员、设备进行作业执行         3.作业过程中,可设置完成时间预警、作业节点通知,时刻了解作业进程         4.做完再给你做过程分析,给出优化建议         就问你这一套下