gpt4 book ai didi

File.read 的 Ruby 性能

转载 作者:数据小太阳 更新时间:2023-10-29 08:38:20 26 4
gpt4 key购买 nike

给定以下脚本:

require 'rubygems'
require 'open-uri'
require 'benchmark'

response = open('http://gdata.youtube.com/feeds/api/videos?q=skateboarding+dog')

outside = Benchmark.measure do
response_body = response.read
10000.times do
response_body.scan(/dog/)
end
end

inside = Benchmark.measure do
10000.times do
response.read.scan(/dog/)
end
end

puts [outside, inside].map(&:utime).inspect

我得到以下结果:

[1.25, 0.06000000000000005]

为什么每次读取文件的性能提高约 20 倍?

如果我的系统信息很重要:

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]

最佳答案

是因为你第一次测试后,response被读到最后,而在第二次测试的每次迭代中,read的结果都是微不足道的,这样就节省了时间,它也只返回空字符串。所以扫描也很快结束。

irb> response.read.scan(/dog/)
=> ["dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog", "dog"]
irb> response.read.scan(/dog/)
=> []

关于File.read 的 Ruby 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20730912/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com