提升 Ruby 运行速度可以从代码层面、运行环境、架构设计三个方向入手。下面按“性价比从高到低”给你一套实用清单。
Ruby 对象开销不小。
# 慢
"#{user.name} #{user.age}"
# 更快(视场景)
user.name + " " + user.age.to_s
循环里尤其要注意:
# 慢
result = []
(1..1000).each { |i| result << i * 2 }
# 快
result = (1..1000).map { |i| i * 2 }
Ruby C 实现的方法远快于 Ruby 层循环:
map / select / rejecteach_with_objectgroup_by / sort_byString#b、freezeSTR = "constant".freeze
避免重复分配内存。
正则很慢,能用 start_with? / include? 就别用 regex。
Ruby 动态派发有成本:
user.profile.address.city
可缓存中间结果。
Ruby 3.x 在:
都有明显提升。
Ruby 3.1+ 自带:
ruby --yjit your_script.rb
或环境变量:
RUBYOPT="--yjit"
很多项目能 提升 20%–2x。
RUBY_GC_HEAP_GROWTH_MAX=0.1
或根据内存调优(Web 服务常用)。
def config
@config ||= load_config
end
把慢操作移出主流程。
stackprofruby-profbenchmarkrequire "benchmark"
Rails 项目:
bin/rails zeitwerk:check
开启 eager_load。
如果你愿意,可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。