18、【Agent】【OpenCode】源码构建(Bun&node速度对比)

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Agent】【OpenCode】源码构建(Bun安装方式)

介绍了 Bun 工具集的安装方式,提到 curl https://.../install | bash 这种命令是现代开源工具中非常常见且标准化的安装方式,然后详细分析了该命令,其管道 | 的前半部分 curl 只是下载一个安装脚本,而不是 Bun 工具集本身,然后第二步 | bash 才是把下载到的脚本内容直接传给 bash 执行,安装脚本主要做三件事:检测系统,下载 Bun 二进制包,解压并配置环境变量,然后提到这种安装方式的风险点,建议可以先查看脚本内容后,再决定是否运行,最后分析了下安装脚本执行完后,几个可预见的变化,下面继续分析

OpenCode

上篇 blog 分析了 Bun 工具集的安装方式,下面再和其他安装方式对比下

方式 命令 优点 缺点
官方安装脚本 `curl ... bash` 块,简单,自动配置 PATH
包管理器 sudo apt install bun 安全,可审计 Ubuntu 官方源暂未收录,且更新会比较慢
手动下载 wget + unzip + chmod 完全可控 需手动配置 PATH
npm 安装 npm install -g bun 传统经典 依赖 Node.js,速度较慢

目前综合来看,推荐官方脚本进行安装

安装成功之后

重启终端,输入

bash 复制代码
bun --version

就可以看到 bun 工具集的安装信息

另外,之前 blog 【Agent】【OpenCode】源码构建(Bun介绍) 说,bun 的速度比 node/npm 快很多(包括启动速度,包安装速度等),下面正好来对比下

首先刚才上面确认了 bun 版本为 1.3.11,再看下 node 版本,为 v18.19.1

先测 node,在终端输入

bash 复制代码
time node -e "console.log('hello')"

可以看到其实际耗时 62ms

再看 bun,终端输入

bash 复制代码
time bun -e "console.log('hello')"

可以看到耗时 8ms,其速度大概是 node 的 8 倍,这种速度优势对小脚本尤其明显,这种性能上的提升有几大核心原因,之前简单提了下,下面详细分析下

首先核心原因之一:bun 用 Zig 语言写的,而不是 C++

  • Node.js :基于 V8(C++)+ libuv(C),启动时要加载大量的动态库 ,另外,JavaScript 引擎,事件循环,文件系统,网络模块等,都是不同团队写的,拼凑在一起,所以启动一个空的 time node -e "console.log('hello')" 也要花 50~100ms
  • Bun :整个运行时用 Zig 语言从头写(作者 Jarred Sumner 自己写的 JS 引擎),零依赖,单二进制文件bun 只有约 30MB,而 Node.js 要搭配 npm,core modules 等),说到底,Node.js 绑定的东西太多,太重载了

核心原因二:Bun 的包管理器是数据库式的设计,而不是单纯文件复制

  • npm / yarn :安装依赖的过程 = 递归下载 tarball → 解压 → 复制文件到 node_modules,每个包都要完整拷贝,即使多个包依赖同一个子包,也会重复存储,此外,这些访问还是 I/O 密集型操作,在机械硬盘上尤其慢
  • Bun :把所有包缓存为一个 SQLiTE 数据库(~/.bun/install.cache),bun install 只写一个符号链接,并更新 JSON lockfile,所有代码在内存中通过共享内存映射直接读取,几乎不碰硬盘

OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Agent】【OpenCode】源码构建(TypeScript&JavaScript)

相关推荐
美酒没故事°18 小时前
Open WebUI安装指南。搭建自己的自托管 AI 平台
人工智能·windows·ai
云烟成雨TD18 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
AI攻城狮18 小时前
用 Obsidian CLI + LLM 构建本地 RAG:让你的笔记真正「活」起来
人工智能·云原生·aigc
鸿乃江边鸟18 小时前
Nanobot 从onboard启动命令来看个人助理Agent的实现
人工智能·ai
lpfasd12318 小时前
基于Cloudflare生态的应用部署与开发全解
人工智能·agent·cloudflare
俞凡18 小时前
DevOps 2.0:智能体如何接管故障修复和基础设施维护
人工智能
comedate18 小时前
[OpenClaw] GLM 5 关于电影 - 人工智能 - 的思考
人工智能·电影评价
财迅通Ai18 小时前
6000万吨产能承压 卫星化学迎来战略窗口期
大数据·人工智能·物联网·卫星化学
liliangcsdn18 小时前
Agent Memory智能体记忆系统的示例分析
数据库·人工智能·全文检索
GISer_Jing18 小时前
Page-agent MCP结构
前端·人工智能