用Rust写的Turbopack,比Vite快20倍?

news2024/11/24 23:09:03

日前,Vercel正式宣布推出新的包装工具Turbopack。Vercel声称这是用Rust编写的Webpack的继任者。在大型应用程序中,它的速度是Vite的10倍,是Webpack的700倍。维特的维护者对此表示怀疑。

Vercel发布新的开源工具Turbopack

Vercel是Next。js框架背后的企业也是围绕开源技术建立的资金最多的公司之一。在过去几年中,该公司通过四轮融资筹集了超过3亿美元。这笔钱用得很好。现在NextJs已经成为服务器端React渲染的“首选”解决方案。然而下一步js框架的开源特性以及公司提供的服务也吸引了越来越多的用户。Github软件工程总监Chiedo John曾对媒体表示,“Vercel进行的一些革命性工作大大改进了开发人员的开发方法。”

下一个js的成功也让前端领域更加活跃。其最大的竞争对手包括Hydrogen(Shopify开发的SSR框架)和Remix。其次,在商业模式方面,Js非常相似。它也是围绕开源技术开发的,最近被Shopify收购,后者成功获得了资金支持。

在资金支持下,Vercel最近聘请了一些JavaScript行业的知名人士,如Tobias Koppers(Webpack的创始人)、Jared Palmer(Formik和Turborepo的创始人)和Rich Harris(Svelte的创始人)。事实证明,Tobias Koppers不仅致力于优化Webpack,还参与了一种新的构建工具Turbopack的开发。

相片

10月26日,在下一届Js Conf 22大会上,Vercel正式宣布推出Turbopack。Vercel声称Turbopack旨在成为Webpack的直接替代品,他还提供了Turbopack的一些数据:“在大型应用中,Turbopack的速度是Vite的10倍,是Webpack的700倍。在大型应用程序中,差异更大——通常比Vite快20倍。此外,启动速度也很快。在一个有3000个模块的应用中,Turbopack仅需1.8秒启动,而Vite仅需11.4秒。”

据报道,Webpack的创始人托比亚斯·科佩斯于2021 4月加入该公司,并领导该项目。Turbopack是Vercel之前的一些工作的延续。在此之前,他们用基于Rust的SWC替换了基于JavaScript的转换器Babel,这将速度提高了17倍。他们还取代了Terser,压缩速度提高了6倍,减少了加载时间和带宽的使用。所以他们再次使用Rust重写Webpack。

Vercel表示,性能改进不仅基于Rust,还“基于增量计算的架构”。该团队借鉴了谷歌Bazel建筑系统的一些想法,该系统适用于大型项目。增量方法意味着避免重复工作。如果您创建了一个增量图形,并且开发人员对其进行了更改,则只会重新计算受影响的图形部分

下一个Js自2016年以来一直在使用Webpack,这可能是Webpack的最大用户。然后他们意识到JavaScript和TypeScript代码的数量增长如此之快,以至于超过了基于JavaScript的工具和架构的能力。因此,Vercel邀请Koppers加入Webpack的转型。Vercel首席执行官吉列尔莫·劳赫(Guillermo Rauch)表示:“他带来了10年的专业知识,见证了这件事的发展。”。

基准测试中是否存在“不公平”的比较?

Turbopack的出现让业界拍手叫好。毕竟,这也是Koppers的“自我突破”,也向大家展示了Rust的巨大潜力。

10月31日,Vercel发布了一份关于如何获得“10x”和“700x”的详细基准报告。在报告中,他们表示,他们已经创建了一个测试生成器,以使应用程序具有可变数量的模块,并针对Nextjs 11、Next。js 12、下一步。带有Turbopack和Vite的Js 13给出了冷启动和代码更新的测试结果。

相片

相片

也就是说,在Vercel的测试中,基于1000个模块并使用“默认设置”,Turbopack的冷启动时间为1.1秒,Vite为4.8秒;Turbopack的代码更新时间为15毫秒,Vite的代码更新为87毫秒。在这种情况下,Turbopack比Vite快5.8倍,而不是广告中的“10倍”。
与此同时,在基准测试中,Vercel再次表示:
一旦应用扩展到超过30k个模块,Turbopack HMR的速度是Vite的10倍。随着模块数量的增加,这种效果更好,50k模块的显示速度提高了20倍。对于具有超过50k模块的大型应用程序,Turbopack HMR比基于Webpack的Next要好。js 11速度快700倍。
维特的辩护人埃文·尤(Evan You)也在10月28日质疑了维塞尔的说法,即它“比维特快10倍”。在维塞尔公布了具体的测试条件和结果后,埃文再次在Github上对其进行了反驳。他认为Vercel测试存在一些缺陷。其中之一是,双方使用的默认设置可能不是Vite的最佳解决方案:Vite使用默认的基于Babel的React插件,而不是RSC;此外,还有小数点选择的问题。Vercel将15秒舍入为0.01秒。
相片

截图来源:https://github.com/yyx990803/vite-vs-next-turbo-hmr/discussions/8
维特的辩护人认为,这家“资金充足”的公司使用了“营销脚本”,这“令人失望”。在Evan You发表这些问题后,来自Hacker News和Reddit的大量在线评论开始指责Vercel的“商业营销”。
在回应Evan You在Github上的提问时,Vercel承认了基准文章中的舍入错误,并感谢他帮助指出了问题。然而,Vercel忽略了Evan的所有其他声明。
写在最后
对于这场非常热闹的争论,一些网友指出,在技术领域,说“一个比另一个快多少倍”是一种常见的技巧。例如,Mongo声称它比X SQL数据库快1000倍,Bun声称它比Deno快3倍。这些宣传效果很好,Mongo和Bun受到了很多关注。
此外,一些网友表示,讨论开源项目背后是否有风投资助的商业公司,这很奇怪。毕竟,我们也从营利性公司那里获得了很多好的开源工具。
围绕基准的辩论至关重要,这可以使双方以公开的方式更好地改进。但更重要的是,我们可以深入施工细节,拨开云雾,了解并关注技术领域的关键发展。
我相信改进后的Turbopack将是一个重要的新构建工具,不仅对NextJ有益,而且对整个社区都有好处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/101183.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数模】层次分析法

对于同一层次中的指标,通过两两比较,构造出判断矩阵,记为A。 aij表示因素i对因素j的重要性比较结果,可采用1-9的量化比例标度来反映其重要程度。 1:指标两个相比,A比B同等重要 3:指标两个相比…

E. Permutation Game(game)

Problem - E - Codeforces 两个玩家正在玩一个游戏。他们有一个整数1,2,...,n的排列组合(排列组合是一个数组,其中从1到n的每个元素正好出现一次)。这个排列组合没有按升序或降序排序(即排列组合…

YOLO系列目标检测算法——YOLOS

YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 PP-YOLO- 文章链接 …

视频:R语言中的Stan概率编程MCMC采样的贝叶斯模型

概率编程使我们能够实现统计模型,而不必担心技术细节。这对于基于MCMC采样的贝叶斯模型特别有用。 最近我们被客户要求撰写关于Stan的研究报告,包括一些图形和统计输出。 R语言中RStan贝叶斯层次模型分析示例stan简介 Stan是用于贝叶斯推理的C 库。它…

十、Docker 复杂安装之3主3从redis集群配置

假设公司现在1-2亿条数据需要缓存,单机单台设备肯定扛不住的,这个时候就需要分布式存储,用redis如果落地呢?本期就带着大家搭建一个3主3从redis集群。 1、拉取redis6.0.8镜像 涉及命令:docker pull redis:6.0.8 实例: 2、创建6个redis容器实例 涉及命令: docker ru…

k8s远程debug

k8s远程debug 1、方案1 方案1是不行的,因为k8s的ingress走的7层协议。 1.1、应用 启动debug端口 java -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 -server -Xms1024m -Xms1024m -jar /opt/app/server.jarnetstat -ntlp1.2、配置k8s的网络和域…

Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口(10)

Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口💙🍓 文章目录Qt-Web混合开发-QWebSocket作为QWebChannel通信数据传输接口💙🍓1、概述🐛🦆2、实现效果😅🙏3、实现功能&a…

m通过matlab实现遥测信道主要影响因素分析

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 遥测技术是指被测对象的状态参数进行超远距离测量,并将测量的数据通过特殊的通信方式发送给地面接收站的一种技术。整个遥测发送接收系统称为遥测系统,而发送遥测信号所通…

LaTeX教程(一)——LaTeX介绍以及导言详解

文章目录1. Latex 介绍2. LaTeX基础2.1 导言区2.2 正文区3. 导言详解3.1 设置时间、作者、日期3.2 全局设置4. 文件组织1. Latex 介绍 什么是LATEX ?LATEX 是一种格式。为免误会,初次接触这一概念的读者可以粗略地将 LATEX 理解成是对 TEX 的一层封装。…

【DELM回归预测】基于matlab松鼠算法改进深度学习极限学习机SSA-DELM数据回归预测【含Matlab源码 1904期】

⛄一、PSO-DELM简介 1 DELM的原理 在2004年,极限学习机(extreme learning machine,ELM)理论被南洋理工大学的黄广斌教授提出,ELM是一种单隐含层前馈神经网络(single-hidden layer feedforward neural network,SLFN&am…

开发社交聊天APP需要注意什么?如何快速开发聊天功能

随着互联网的发展,人们的沟通方式也在悄悄发生变化,由原来的面对面沟通,发展为网上沟通。让大家日常生活的通讯越来越方便了,各种APP层出不穷。那么,想开发一款社交聊天并进行运营,需要注意哪些方面&#x…

【推荐】产品经理需求模板,案例等文档合集15篇

产品经理的职责描述仍然分歧很多,因人、因公司而异。即使是在相对较为一致的高科技行业,不同公司中的职位描述也是很不同的。但通常认为产品经理的职责主要包括:产品经理负责调查并根据用户的需求,确定开发何种产品, 选择何种技术、商业模式等…

【Python机器学习】过拟合及其抑制方法讲解及实战(图文解释 附源码)

需要源码请点赞关注收藏后评论区留言私信~~~ 欠拟合、过拟合与泛化能力 欠拟合 最简单的线性模型,它是用一条直线来逼近各个样本点,显然力不从心,这种现象称为欠拟合。欠拟合模型是由于模型复杂度不够,训练样本集容量不够&#…

哈希表题目:环形链表

文章目录题目标题和出处难度题目描述要求示例数据范围进阶解法一思路和算法代码复杂度分析解法二思路和算法代码复杂度分析题目 标题和出处 标题:环形链表 出处:141. 环形链表 难度 2 级 题目描述 要求 给你一个链表的头结点 head\texttt{head}h…

网易云VIP音乐NCM文件转MP3,C语言版本

前言网易云的Vip音乐下载下来,格式不是mp3/flac这种通用的音乐格式,而是经过加密的ncm文件。只有用网易云的音乐App才能够打开。于是想到可不可以把.ncm文件转换成mp3或者flac文件,上google查了一下,发现有不少人已经做了这件事,但…

go : 无法将“go”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

先安装go环境 https://blog.csdn.net/csl12919/article/details/128372584?csdn_share_tail%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22128372584%22%2C%22source%22%3A%22csl12919%22%7Dhttps://blog.csdn.net/csl12919/article/details/1…

C案例:最小覆盖圆问题

文章目录一、提出任务 - 最小覆盖圆(一)描述(二)输入(三)输出(四)样例输入输出二、完成任务(一)编程思路(二)编写代码,实现…

魔百和M401A刷入Armbian系统EMMC

魔百和M401A刷入Armbian系统 准备工具 1. 电视盒子、U盘、键盘、显示器、HDMI线 2. armbian系统镜像包: Armbian_23.02.0_amlogic_s905l3a_bullseye_5.15.82_server_2022.12.12.img.gz 3. U盘写入工具: refus/usbWriter/balenaEtcher文件链接&#xff…

阻塞队列的使用

🎈专栏链接:多线程相关知识详解 目录 一.阻塞队列的介绍 二.使用阻塞队列/生产者消费者模型的好处 1.使用阻塞队列,有利于代码"解耦合" 2.削峰填谷 三.阻塞队列的使用 四.模拟实现阻塞队列 一.阻塞队列的介绍 1.线程是安全的 2.当进行入队操作的时候…

[附源码]计算机毕业设计Node.js吃天下美食网站(程序+LW)

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…