Ruby 性能优化入门
性能优化的第一步不是改代码,而是测量。没有测量,你不知道程序慢在哪里,也不知道修改有没有效果。
使用 Benchmark
require "benchmark"
time = Benchmark.realtime do
100_000.times { "ruby".upcase }
end
puts "cost: #{time}s"
Benchmark.realtime 可以测量一段代码执行耗时。
常见瓶颈
Ruby 程序慢,可能来自:
- 算法复杂度太高。
- 重复读取文件或网络。
- 数据 库查询太多。
- 没有使用索引。
- 创建了大量临时对象。
- 日志输出过多。
- JSON/CSV 处理数据量很大。
不要一开始就怀疑 Ruby 语言本身。很多性能问题是算法、I/O 或数据库问题。
从算法开始
低效查找:
users.find { |user| user[:id] == target_id }
如果要反复按 ID 查找,可以先建立 Hash:
users_by_id = users.to_h { |user| [user[:id], user] }
user = users_by_id[target_id]