ruby – 为什么`File.write`有时会变慢?
发布时间:2020-12-17 03:10:56 所属栏目:百科 来源:网络整理
导读:这是我的代码: start = Time.nowFile.write('/tmp/a.txt','Hello,world!')puts "Saved in #{Time.now - start}" 在某些情况下,我在日志中看到了这一点: Saved in 0.001Saved in 0.002Saved in 0.245Saved in 0.002 为什么偶尔出现这种飙升?那可能是什么?
这是我的代码:
start = Time.now File.write('/tmp/a.txt','Hello,world!') puts "Saved in #{Time.now - start}" 在某些情况下,我在日志中看到了这一点: Saved in 0.001 Saved in 0.002 Saved in 0.245 Saved in 0.002 为什么偶尔出现这种飙升?那可能是什么?我不是在任何地方使用羊群.我怀疑是某些库已经覆盖了File.write()方法,并在那里添加了一些锁定/同步.可能吗? 更新:似乎Dir.new()经常访问该目录,阻止访问它. 解决方法
似乎Dir.new()在应用程序的另一个地方完全锁定整个目录,并且不允许File.write()快速工作.这是重现问题的测试(使用
threads gem):
require 'tmpdir' require 'threads' Dir.mktmpdir do |dir| file = File.join(dir,'hey.txt') Thread.start do loop do Dir.new(dir) end end Threads.new(100).assert do start = Time.now File.open(file,'w+') do |f| f.write('test') end puts("Saved in #{Time.now - start}") sleep 1 end end 这个会很慢.但是,如果用这个替换Dir.new,一切都会再次快速移动: `ls #{dir}`.split(' ') Ruby bug?我不知道. 顺便说一句,Dir.glob()也是如此 – 它也很慢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- Postgrey和PostgreSQL
- c# – 为什么使用FlagsAttribute定义EntityState
- 微信公众平台_发送被动响应消息接口 实体类转换为
- ios – 类GAD_GTMStringEncoding在和中实现.将使
- react native Component 生命周期
- ruby-on-rails-3 – Rails collection_select默认
- 解决Solr6.2.1(当前最新版本) schem.xml中Field属
- ruby-on-rails – Rolify和CanCan有什么意义?
- ruby-on-rails – 是否可以使i18n locales轨道互
- PostgreSQL TPC-H测试
热点阅读