Mark24
记录灵感、技术、思考
Ruby优化的一些方式
一、动态性和平衡
动态语言才是语言进化的方向,体现了程序的自动化。动态型才是在为人服务,为工程师服务。
所以个人倾向于——极致的动态语言技术+有针对性的瓶颈优化
这个组合来平衡效率和性能
二、一些优化的思路
JIT思路
- 开启自动JIT
- 手动指定JIT —— 这个灵感来自于Python的JIT。手动的指定性能瓶颈处编译为JIT
多线程+模型
- 使用无GIL的解释器、促进代码逻辑的无竞争,充分使用多线程
- Ractor模型
EventLoop模型
- 非阻塞模型 实现比如 Eventmachine
多进程
- progress+fork 把调度丢给操作系统
手动控制流程
- Fiber
使用C底层,替换性能瓶颈
1.比如 HTTP Server Agoo性能和Go相当
使用FFI调用外部程序
1.比如Go\Rust\C 书写瓶颈部分,Ruby调用提升性能
同等语法 编译型
- Cystal
- https://amberframework.org/
优化
- 根据Ruby动态的数据类型特点,针对一些算法进行优化