我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如此多的 JavaScript 框架,哪个最快?

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如此多的 JavaScript 框架,哪个最快?

JavaScript 框架数量众多,那究竟哪个框架速度更快呢?今天就来分享一个开源的 JavaScript 框架性能基准工具:js-framework-benchmark,它通过测量各种常见操作的执行时间、内存占用等来对比不同框架的性能。下面就来看看这个工具是怎么使用的吧!

浏览器版本

进入官方测试结果的首页,可以看到不同浏览器版本的测试结果链接,从 Chrome 55 版本到最新的 114 版本,该页面会随着浏览器版本的更新而更新(更新有延迟)。

这里我们选择最新的版本进行查看:

这个页面最上方会有一些筛选项,包括框架种类、基准种类、展示模式。

框架种类

这里将 JavaScript 框架分为两类:

  • 基于 key 的实现:通过分配 key 来创建数据和 DOM 元素之间的关联。如果数据发生变化,具有该 key 的 DOM 元素将更新。因此,在数据数组中插入或删除元素会导致相应地更改 DOM。
  • 非基于 key 的实现:允许重用现有的 DOM 元素。因此,在数据数组中插入或删除元素可能会在最后一个表行后追加,或者删除该行,并更新插入或删除索引后的所有元素的内容。这样做可能性能更好,但是如果 DOM 状态在外部被修改可能会导致问题。

下面是 js-framework-benchmark 支持的 JavaScript 框架:

这里提供了全选和全不选按钮,并支持选择任意框架,选择完之后就可以查看结果了:

基准种类

性能测试基准分为三类:

  • 持续时间
  • 启动指标
  • 内存分配

当选择完框架之后,就会展示三个表格,分别对应这三类指标。

可以看到,在所有的指标中, solid.js 的平均值都是最低的,性能最好。在最常用的三大前端框架(Vue、React、Angular)中,Vue 的性能最好,React 的性能最差。

(1)持续时间

  • create rows:创建行,页面加载后创建 1000 行的持续时间(无预热)
  • replace all rows:替换所有行,替换表中所有 1000 行所需的时间(5 次预热循环)。该指标最大的价值就是了解当页面上的大部分内容发生变化时库的执行方式。
  • partial update:部分更新,对于具有 10000 行的表,每 10 行更新一次文本(进行 5 次预热循环)。该指标是动画性能和深层嵌套数据结构开销等方面的最佳指标。
  • select row:选择行,在单击行时高亮显示该行所需的时间(进行 5 次预热循环)。
  • swap rows:交换行,在包含 1000 行的表中交换 2 行的时间(进行 5 次预热迭代)。
  • remove row:删除行,在包含 1,000 行的表格上移除一行所需的时间(有 5 次预热迭代),该指标可能变化最少,因为它比库的任何开销更多地测试浏览器布局变化(因为所有行向上移动)。
  • create many rows:创建多行,创建 10000 行所需的时间(没有预热),该指标更容易受到内存开销的影响,并且对于效率较低的库来说,扩展性会更差。
  • append rows to large table:追加行到大型表格,在包含 10000 行的表格上添加 1000 行所需的时间(没有预热)。
  • clear rows:清空行,清空包含 10000 行的表格所需的时间(没有预热),该指标说明了库清理代码的成本,内存使用对这个指标的影响很大,因为浏览器需要更多的 GC。

(2)内存分配

  • ready memory:页面加载后的内存使用量。页面上只有几个按钮,因此这个内存数字较低,大多数库在这里表现相似。
  • run memory:添加1000行后的内存使用情况。
  • Update every 10th row:与性能测试 3 相同,但这次我们看到了执行部分更新的内存开销。大多数情况下,这是新字符串值的分配,但第一次看到库动态比较机制的内存开销。
  • Replace Rows:这将 1000 行替换 5 次。这是检测内存泄漏的一个很好的测试。
  • Create/Clear Rows:创建然后清除 1000 行。

(3)启动指标

  • Consistently Interactive:持续交互,一个悲观的TTI,等待CPU空闲50ms。除非库很大,否则这里的分数分布不会那么大,而且主要随着包大小而扩展,但似乎没有受到影响的 WASM 库除外(Blazor 除外)。
  • Total Kilobyte Weight:总 KB 大小,这衡量了所有资源的总大小,包括用户代码、HTML 和 CSS。这很有用,因为它显示了实际构建大小与包大小之间的差别。

其他框架

该工具除了支持对 JavaScript 框架进行性能基准测试之外,还支持对 Rust 实现的 WebAssembly 库和框架进行测试,如 wasm-bindgen、stdweb、yew、seed 等。

小结

js-framework-benchmark 的测试结果是相对准确的,因为它是针对同样的测试样本和基准测试情境进行比较,可以提供框架之间的相对性能比较。然而,需要注意的是,这个测试结果也只是反映了测试条件下的性能表现。框架实际的性能可能还会受到很多方面的影响。

此外,js-framework-benchmark 测试结果也不应该成为选择框架的唯一指标。在选择框架时,还需要考虑框架的生态、开发效率、易用性等多方面因素,而不仅仅是性能表现。

Github:https://github.com/krausest/js-framework-benchmark

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如此多的 JavaScript 框架,哪个最快?

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如此多的 JavaScript 框架,哪个最快?

js-framework-benchmark 的测试结果是相对准确的,因为它是针对同样的测试样本和基准测试情境进行比较,可以提供框架之间的相对性能比较。然而,需要注意的是,这个测试结果也只是反映了测试条件下的性能表现。框架实际的性能可能还会

Qwik简介:一个超快的JavaScript框架

Qwik对代码拆分和延迟加载的创新方法为前端JavaScript提供了一种新的发展方式。本文将对Qwik进行简要介绍。

十大PHP框架:哪种框架是被用得最多的PHP框架?​

Web开发的主力编程语言PHP继续在构建Web应用程序和定制应用软件开发中占统治地位。由于可供使用的框架太多,选择一种合适的框架可能并非易事。

哪个 C++ 单元测试框架最适合快速开发?

google test 和 c++atch2 均为流行的 c++ 单元测试框架,适用于快速开发。google test 提供了易用性、灵活性以及丰富的断言宏,而 catch2 采用了现代语法、简短的宏表达式以及对多种编译器的支持。对于快速开
哪个 C++ 单元测试框架最适合快速开发?
2024-04-23

2023年哪个前端框架用的最多?用数据说话

2023 年,TypeScript 的每月下载量持续稳定增长,年度累计下载量高达2,071,832,110(20.7 亿+),展现了强大的市场需求和用户认可。

开源的 Web 框架哪个快?我在 GitHub 找到了答案

在开源这片自由的土地上,孕育了太多开源 Web 框架。我在 GitHub 上搜了一下“web framework”关键字显示有 56000+ 匹配的开源项目,它们百花齐放各有特色,覆盖多种语言。
开源Web框架2024-12-14

JavaScript Vue.js 与其他框架的对比:哪一个更适合你?

Vue.js 与其他框架的对比:哪一个更适合你? Vue.js、React、Angular、前端框架、比较
JavaScript Vue.js 与其他框架的对比:哪一个更适合你?
2024-02-04

10个最受欢迎的 JavaScript 框架,以及它们的主要特征和功能

多年来,业界已经发布了大量 JavaScript 框架,怎样进行选择可能是一个挑战。如果你感到困惑,不知道应该选哪个或者究竟哪个适合你,那么我已经帮你解决了问题。在本文中,我将列出用来构建 Web 应用程序的前10个 JavaScript
2023-06-03

聊聊2024最活跃的前端框架是哪个?Vue、React、Angular、Svelte、Ember?

目前网上有各种 Vue vs React vs Angular vs...... 的对比文章。这些文章对比了各种常用框架的信息,并且通常会以一个永远都不会错的结论: 所有框架都足够好,选择取决于你的需要和想法 作为结尾。
前端VueReact2024-11-29

让我们通过构建一个现代 JavaScript 框架来学习它是如何工作的

如果所有这些东西都到位,那么你可以想象在实际上拥有一个“在浏览器中的 Lit”,或者至少一种快速构建你自己“在浏览器中的 Lit”的方法。与此同时,我希望这个小练习有助于说明一些框架作者考虑的事情,以及你最喜欢的 JavaScript 框架

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录