Bun 1.0 初体验体验:这口包子香吗?
Bun 1.0是一个新的JavaScript运行时,作为Node.js的替代品,提供更快的包管理和开发解决方案。尽管目前在生产环境中尚不成熟,但它集成了多种工具,支持统一模块标准和Web API,具有显著的性能优势。Bun的包管理器速度比pnpm快4倍,支持原生JSX和TS,且具备构建工具的潜力。整体来看,Bun在运行时和工具链上均有加速效果,但仍需进一步发展以满足生产需求。
Windows 11 23H2引入了Windows Dev Home和Dev Drive,后者基于ReFS文件系统,提供了性能提升和数据可靠性。在基准测试中,Dev Drive在某些开发命令下表现优于NTFS,平均领先约5秒。虽然Dev Home的功能尚未完全可用,但Dev Drive在日常开发中仍显示出一定的优势,值得开发者尝试。
Windows 11 23H2的Windows Dev Home是一个新的开发者中心,提供了一些功能来改进Windows开发。此外,Windows 11 23H2还提供了Dev Drive,这是一个基于ReFS的新存储卷,具有性能提升和数据可靠性。在基准测试中,发现ReFS在开发命令下性能更好,平均领先幅度为5秒左右,但NTFS的性能也相当不错。总的来说,Dev Home和Dev Drive对于Windows开发者来说是有一定帮助的。
随着Windows 11 23H2发布的除了大名鼎鼎的Copilot,还有Windows Dev Home。比起感觉噱头大于实用性的Coplilot,个人更关注Dev Home对Windows开发有什么改进之处。
这里先简单谈谈另一个更新——开发者中心(Dev Home),就是下面这玩意儿:
根据官网,它提供以下功能:
由于它的插件基本还处于不可用阶段,定义为没用,不如终端。
Dev Drive是基于ReFS(Resilient File System,弹性文件系统),针对开发者优化推出的新存储卷。据微软官方介绍,整体构建时间性能提升30%。
底层详见:https://learn.microsoft.com/zh-cn/windows-server/storage/refs/refs-overview
ReFS(Resilient File System,弹性文件系统)是微软推出的新文件系统,是1992年推出的NTFS的继任者。它具有以下特性:
复原性
性能优化
加快虚拟化操作(加快WSL在其上工作的性能)
NTFS仍能满足大部分基础需要,在某些特定场景下可以使用ReFS
Feature | ReFS | NTFS |
最大文件名称长度 | 255 个 Unicode 字符 | 255 个 Unicode 字符 |
最大路径名称长度 | 32K Unicode 字符 | 32K Unicode 字符 |
文件大小上限 | 35 PB(拍字节) | 256 TB |
最大卷大小 | 35 PB | 256 TB |
VHDX 文件是虚拟硬盘 v2 文件格式的磁盘映像文件,它包含一个完整的物理磁盘分区信息,但是存储在单个文件中。它支持固定大小、动态大小两种形式。
与doc与docx的关系类似,VHDx是VHD(Virtual Hard Disk)的后续格式,用于描述虚拟硬盘的文件及系统。
当你创建了一个VHDX后会多出一个对应文件:
打开这个文件就会自动挂载该硬盘,与ISO/DMG一样,挂载后的行为也和正常磁盘一致,可以弹出。
使用VHDX而非物理分区来创建开发用ReFS硬盘的好处是在设置应用中即可快速创建虚拟分区,无需重启电脑,也不会提前占用空间。
在上面的设置中我们点击创建Dev Drive,根据提示即可创建我们的分区。
根据官网,微软建议将工作目录、存储库和包缓存放置在开发驱动器上,依赖ReFS,构建、依赖解析、Git等方面将获得一些性能提升。
这里用我个人博客项目来做一个简单的基准测试,由于Dev Drive之前吹嘘了Git性能,我就想从冷启动Clone开始测试性能:
git clone
、pnpm install
和pnpm run build
测试前端开发的全流程由于测试内容跨分区,我Powershell学艺不精,靠GPT帮忙写了份测试脚本,将这份脚本分别放在了D:和E:的根目录下。
param(
[string]$repoUrl
)
# 检查是否提供了仓库地址
if (-not $repoUrl) {
Write-Host "请提供仓库地址作为参数。"
Exit
}
# 获取当前脚本所在的路径作为仓库本地存储路径
$repoFolder = Join-Path $PSScriptRoot "test_repo"
# Clone Git 仓库
git clone $repoUrl $repoFolder
# 进入仓库目录
cd $repoFolder
# 安装依赖
pnpm install
# 构建项目
pnpm run build
随后运行测试脚本,结果如下图所示:
结果令人有些大跌眼镜,没想到NTFS(D:)居然比ReFS(E:)更快,但是考虑到Git Clone受网络波动影响,二者的最快性能没有明显差异(2%的平均速度差)。
我们随后又简单修改了脚本,专门测试pnpm install && pnpm build
的性能,这个操作比Clone要更频繁一些。
在D盘(NTFS)的测试结果如下:
在E盘(ReFS)的测试结果如下:
可以看到在真正的开发命令下ReFS翻身做主人,平均5s(约18%)的领先幅度,不多但有点用,且不能排除虚拟磁盘对性能的影响。
因此,在日常开发环境下,Dev Drive即便在如此不平衡的试验下仍能取得一定的优势,且它可以轻松地将代码组织在一个磁盘下,很好地满足了我的整洁癖,个人评价值得一用。
作者: ChlorineC
创建于: 2023-11-15 16:06:00
更新于: 2025-02-15 19:27:00
版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
Bun 1.0是一个新的JavaScript运行时,作为Node.js的替代品,提供更快的包管理和开发解决方案。尽管目前在生产环境中尚不成熟,但它集成了多种工具,支持统一模块标准和Web API,具有显著的性能优势。Bun的包管理器速度比pnpm快4倍,支持原生JSX和TS,且具备构建工具的潜力。整体来看,Bun在运行时和工具链上均有加速效果,但仍需进一步发展以满足生产需求。
本文讨论了如何优化命令行终端体验,包括Shell Prompt的设计、Prompt工具的选择(如oh-my-posh和starship)、Nerd Fonts的使用,以及Powershell和Unix终端的配置。强调了不同版本Powershell的特点和配置文件的管理,介绍了oh-my-zsh的安装与主题选择,最后提到tmux作为终端复用工具的使用。
本文记录了重新构建Python编程环境的过程,主要包括从零开始构建面向PyQt5的环境和整理混乱的Python环境。使用miniconda管理多个Python环境,强调了conda的包管理和虚拟环境管理功能,介绍了mamba作为conda的替代品以提高依赖解析和下载速度,并详细说明了安装CUDA和PyTorch的步骤。
本文介绍了monorepo(单体仓库)的概念及其在前端项目中的应用,强调了使用yarn workspace和lerna进行项目管理的优势。monorepo允许多个项目在同一仓库中管理,便于依赖共享和版本发布。文章还探讨了monorepo的优缺点、适用场景以及最佳实践,包括commit规范、Git Hooks和自动化工具的使用,旨在帮助开发者更高效地管理和维护前端项目。