Ruby 的 JIT 编译器:幕后揭秘

2025-09-13
Ruby 的 JIT 编译器:幕后揭秘

本文深入探讨了 Ruby 的 JIT 编译器(例如 YJIT 和 ZJIT)的工作原理。它解释了 JIT 编译的代码如何与字节码共存,以及 Ruby 如何在两者之间切换执行。文章还阐述了 Ruby 如何决定编译哪些方法(基于调用次数),以及 JIT 代码在哪些情况下会回退到解释器执行(例如,TracePoint 激活或核心方法被重新定义)。总而言之,Ruby 的 JIT 编译器通过一个巧妙的机制,在性能和正确性之间取得了平衡。

阅读更多
开发

AI赋能:十年Ruby开发者一年内掌握多语言编程

2025-07-23
AI赋能:十年Ruby开发者一年内掌握多语言编程

一位十年只用Ruby的开发者,借助AI编程工具Cursor和Claude Code,一年内掌握了C++、C和Rust等多种语言。文章讲述了作者如何在AI的辅助下,克服学习系统编程语言的困难,并高效地参与到Sorbet、RBS和ZJIT等项目的开发中。AI并非直接编写代码,而是作为一名具备互补技能的编程伙伴,帮助作者理解语言语法、常用模式,并解答疑问,从而大大缩短了学习曲线,使作者能够从第一天起就做出有意义的贡献。作者认为,AI加速了学习过程,但人类专家的经验仍然不可替代,AI和人类协作是未来编程趋势。

阅读更多
开发

Ruby 3.5 对象分配速度提升六倍:内联 Class#new 的秘密

2025-05-22
Ruby 3.5 对象分配速度提升六倍:内联 Class#new 的秘密

Ruby 3.5 通过内联 Class#new 方法显著提升了对象分配速度,最高可达 6 倍。文章深入探讨了这项优化的细节,包括基准测试结果、性能瓶颈分析以及内联技术的实现原理。通过避免方法调用开销,减少参数复制,并提升内联缓存命中率,这项优化有效解决了 Ruby 对象分配的性能问题,但同时也带来了一些细微的向后兼容性问题。

阅读更多
开发

无需类型注解的Ruby静态类型分析

2025-03-13
无需类型注解的Ruby静态类型分析

Shopify工程师们开发了一种创新的静态类型分析器,无需类型注解即可推断Ruby程序的类型信息。该分析器通过改进的Sparse Conditional Constant Propagation (SCCP)算法和精确的数据流跟踪,实现了对函数间类型分析的高效处理,即使在处理包含大量类的程序时,也能在几秒钟内完成分析。这项研究为动态语言编译器的优化提供了新的思路,为Ruby等动态语言的性能提升开辟了新的可能性。

阅读更多

Ruby FFI 的 JIT 加速:告别性能税

2025-02-12
Ruby FFI 的 JIT 加速:告别性能税

本文探讨了如何通过即时编译(JIT)技术提升 Ruby 的 FFI (Foreign Function Interface) 性能。作者通过基准测试展示了 FFI 相比原生扩展的性能劣势,并提出了一种名为 FJIT 的解决方案。FJIT 利用 RJIT 和自定义的机器码生成工具,在运行时生成机器码来调用外部函数,从而绕过 FFI 的开销。测试结果显示,FJIT 的性能甚至优于原生扩展,为追求高性能的 Ruby 开发者提供了一种新的选择。目前 FJIT 仍处于原型阶段,仅支持 ARM64 架构,但作者相信未来可以扩展到其他架构和更复杂的函数调用。

阅读更多
开发

Shopify新一代带外垃圾回收机制:显著降低Rails应用延迟

2024-11-02
Shopify新一代带外垃圾回收机制:显著降低Rails应用延迟

Shopify在其Rails单体应用中实现了新一代带外垃圾回收机制,通过完全禁用请求周期内的主垃圾回收,并根据需要手动触发,显著降低了应用延迟。测试结果显示,新机制大幅降低了p95、p99等高百分位延迟,并改善了服务平均延迟和p99延迟。虽然对容量的影响不如预期,但在部署暂停期间,新机制的运行频率远低于旧版本。未来,Shopify计划进一步优化次要垃圾回收,以减少请求在垃圾回收上花费的时间。

阅读更多
未分类

Autotuner: How to Speed Up Your Rails App | Rails at Scale

2024-04-25
Autotuner: How to Speed Up Your Rails App | Rails at Scale

此网站提供了有关如何使用 Autotuner 加速 Rails 应用程序的指南。指南涵盖了 Autotuner 的概述、所需的环境设置以及如何分析报告结果。还讨论了使用 Autotuner 的常见问题,例如防止脚本干扰生产环境。文章的结尾提供了额外的资源,以供读者进一步了解 Autotuner。

阅读更多
未分类