大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 如何测量初始化时每个gem需要多少内存?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我想看看每个宝石在启动时有多少内存.
我们使用以下方法跟踪我们应用程序的Gemfile中指定的每个gem的内存要求,而无需尝试修补bundler.
>使用Rails new myappname生成一个新的空轨应用程序
>将Gemfile从主项目复制到这个新的rails项目
>运行捆绑安装,然后运行rails服务器,以确保可以启动rails服务器,并加载所需的任何基本配置
>打开Gemfile,除了rails gem的规范之外,在每一行末尾附加require:false.确保使用一个名称指定但需要使用的任何其他宝石:require => ‘othergemname’使用较旧的ruby哈希符号,以便下面的模式匹配.
>再次运行bundle重新生成Gemfile.lock
>创建以下脚本,将手动使用需要Gemfile中指定的每个gem,并记录rails进程之前和之后消耗的系统内存.
# require_and_profile.rb def require_and_profile(gemname = nil) unless gemname puts "%-20s: %10s | %10s" % ['gem','increment','@R_927_10586@l'] return end # This is how to get memory of calling process in OS X,check host OS for variants memory_usage = `ps -o rss= -p #{Process.piD}`.to_i / 1024.0 require gemname puts "%-20s: %10.2f | %10.2f" % [ gemname,(`ps -o rss= -p #{Process.piD}`.to_i / 1024.0 - memory_usagE),(`ps -o rss= -p #{Process.piD}`.to_i / 1024.0)] end pattern = /^[^#]*gem[ ]*['"]([^,'"]*)['"][,~>0-9\.'"]*(:require[ => ]*['"]([^'"]*)['"][,])?/ require_and_profile File.open('Gemfile').each do |line| if line.match(pattern) if line.match(pattern)[3] require_and_profile line.match(pattern)[3] else require_and_profile line.match(pattern)[1] end end end
>运行轨道c
> load’require_and_profile.rb’
>输出显示每个gem添加到基本应用程序占用空间(增量)的多少(以MB为单位),以及包含gem(总计)之后的总占地面积.
这有助于我们识别,例如,当我们只需要在资产组中时,我们就会在启动时要求资产同步.我们确实发现,在不同的引导下,每个宝石的内存占用不完全相同,但运行它几次会显示哪些是内存饥饿宝石的模式.
以上是大佬教程为你收集整理的ruby-on-rails – 如何测量初始化时每个gem需要多少内存?全部内容,希望文章能够帮你解决ruby-on-rails – 如何测量初始化时每个gem需要多少内存?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。