Pig Fang

RSS: https://blog.gplane.win/rss.xml
Pig Fang 的个人博客。

wat formatter 性能优化

¶ (#使用-arena)使用 arena arena 允许我们在一段连续的内存空间中分配对象,并且在 arena 销毁时一次性释放所有对象而不是像传统的那样在
评论点赞收藏79 天前

WAT 解析器性能优化:重写后提速 350%

WAT(WebAssembly文本格式)解析器性能提升350%的真实优化记录。作者亲手重写了 wasm-language-tools 中的 WAT 解析器,从 parser combinator 库改为手写实现,并分享了多项具体优化技巧:预创建并复用常用 token 和节点(利用 Arc 和 LazyLock 避免重复分配)、用字节前缀匹配替代字符串比较来识别关键字、用 get_unchecked 跳过 UTF-8 边界检查、自定义轻量 Token 类型延迟创建昂贵的 GreenToken、复用单 Vec 配合 drain 操作减少大量临时分配开销。附 benchmark 对比:旧解析器约 59µs,新解析器约 13µs。有完整代码示例与实现思路,适合 Rust/WebAssembly 开发者深入参考。
评论点赞收藏213 天前

2025年度总结

¶ (#Coding)Coding 本年在 GitHub 上有超过 1300 次 contributions,完整时间线可前往
评论点赞收藏229 天前

isNaN 与 Number.isNaN 的区别

位于全局的 isNaN 与 Number.isNaN 虽然函数名字一样,但具体行为是有差别的: • isNaN 会对传入的参数执行类型转换,转换为数字类型后再去判断;
评论点赞收藏973 天前

TypeScript 的内置 NoInfer 类型

TypeScript 新特性抢先看:新的内置类型 NoInfer。它与 Uppercase 等类型都属于 marker type(即 lib.d.ts 里的实现只有一个 intrinsic</
评论点赞收藏974 天前

core-js 版本问题

Babel 和 SWC 都有 core-js 相关的选项,用于精确控制要注入的 polyfill。对于 Babel,它在 @babel/preset-env 的选项下
评论点赞收藏976 天前

安装 Linux 后要调整的东西

最近新组了一台电脑,安装了 Linux 后遇到了一些以前没有注意或没有碰到的问题。 ¶ (#Baloo-占用大量硬盘读写)Baloo 占用大量硬盘读写
评论点赞收藏1615 天前

2022 年每日一学

¶ (#2022-01-17)2022-01-17 如果在同一个 webpack 配置文件中以数组的形式导出多份配置时,webpack 并不会按照数组中的顺
评论点赞收藏1669 天前

2021 年每日一学

¶ (#2021-12-13)2021-12-13 在使用 Fetch API 进行文件上传时,不能手动设置头部的 Content-Type</
评论点赞收藏1707 天前

参与 SWC 贡献时学到的那些奇怪 class 语法

作者在参与 SWC(高性能 JavaScript/TypeScript 编译工具)开源贡献过程中,遇到了 JavaScript class 语法中一些不常用但很精妙的特性。文章以实际踩坑经历切入,揭示了 class 语法在编译器底层实现中的特殊用法,包括 private field 的底层行为、super 调用的边界情况、以及一些规范层面的细节。这类知识通常在日常业务开发中不会碰到,但在工具链贡献、元编程或框架开发中非常实用。有真实贡献背景支撑,不是泛泛的语法教程。
评论点赞收藏1717 天前

登录芦苇

登录后关注作者、收藏内容和参与讨论。