Tag: 性能

“rake assets:precompile”的糟糕时间表现

运行: bundle exec rake assets:precompile RAILS_ENV=production 对于总计约250kb的15个.js文件大约需要6分钟。 它不应该花这么长时间吗? 我看到“Microsoft基于控制台的脚本主机”在大部分时间里都处于平稳状态。 人们推荐/知道什么是可能的? 有没有办法用Ruby-Racer或其他javascript V8引擎实现替换它? 或者找出我的代码中导致时间长的问题? 或者是其他东西?

Rails 3用户匹配算法到SQL查询(COMPLICATED)

我目前正在开发一款基于已回答问题与用户匹配的应用。 我在普通的RoR和ActiveRecord查询中实现了我的算法,但是使用它的速度很慢。 将一个用户与其他100个用户匹配 Completed 200 OK in 17741ms (Views: 106.1ms | ActiveRecord: 1078.6ms) 在我的本地机器上。 但仍然……我现在想在原始SQL中实现这一点,以获得更多性能。 但我真的很难理解SQL查询中的SQL查询以及类似这样的事情以及计算等等。我的头脑即将爆炸,我甚至不知道从哪里开始。 这是我的算法: def match(user) @a_score = (self.actual_score(user).to_f / self.possible_score(user).to_f) * 100 @b_score = (user.actual_score(self).to_f / user.possible_score(self).to_f) * 100 if self.common_questions(user) == [] 0.to_f else match = Math.sqrt(@a_score * @b_score) – (100 / self.common_questions(user).count) if match <= 0 0.to_f else match […]

MySQL / Rails性能:一个表,多行与多表,少行?

在我的Rails应用程序中,我有几个处理资产的模型(附件,图片,徽标等)。 我正在使用attachment_fu,到目前为止,我有3个不同的表来存储我的MySQL数据库中的信息。 我想知道如果我使用STI并将所有信息放在一个表中,使用类型列并具有不同的inheritance类,它是否会对性能产生影响。 它会更干燥,更容易维护,因为它们共享许多属性和特征。 但是什么更快? 每个表有多少个表,少行或只有一个有很多行的表? 或者没有任何区别? 我将不得不每秒处理大量信息和许多查询。 感谢您的意见!

Rails在ruby 1.9.1上初始化非常慢

我刚刚在ruby 1.9.1上运行了我的rails 2.3.8 app。 要进入控制台,启动Web服务器,任何初始化rails的东西,在ruby 1.9中比在ruby 1.8.7中长3-4倍。 我正在使用ruby版本管理器,因此我可以轻松地在ruby 1.9和ruby 1.8.7之间切换。 速度差异发生在生产和开发中。 我想使用1.9,因为一旦一切运行它必须更快,但是启动时间非常糟糕,应用程序在第一次请求时在Heroku上超时。 任何想法为什么ruby 1.9会慢3-4倍? 我无法理解我的生活。

Rails通过连接表获得关联计数

这个问题是Rails中HABTM协会的一个分支:收集和计算模型儿童的类别 。 鉴于: class Category < ActiveRecord::Base has_and_belongs_to_many :books validates_uniqueness_of :name end class Book < ActiveRecord::Base has_and_belongs_to_many :categories end class Store < ActiveRecord::Base has_many :books has_many :categories, through: :books end 任务: 给定商店,列出每个类别的书籍数量。 Store.first.books_per_category 期望的输出: [ { name: ‘mystery’, count: 5 }, { name: ‘fantasy’, count: 6 } ] 然而,每家商店可能拥有大量的书籍和类别 。 我正在尝试创建一个单一的高性能查询,该查询只获取名称列和每个与商店关联的不同类别的书籍计数,而不将书籍加载到内存中。 我到目前为止尝试过: class Store < […]

Heroku App启动超时

我有一个相当大的,2.3升级到Rails 3应用程序,这足够胖它没有通过Heroku的60秒启动门,因此它崩溃了。 我已经做了很多工作来最小化Gems和初始化器中的加载时间,但是有一些随机过程是燃烧时间,我不确定它是什么。 我可以用另一双眼睛。 这是带有config.ru,application.rb和environment.rb以及Gemfile的GIST。 https://gist.github.com/2026140 任何想法将不胜感激。

是否每次加载页面时都会执行每个相关计算?

我有一个模型“Wrapper”,其中包含另一个模型“Category”,其中又有另一个模型“Thing”。 “Thing”具有整数属性:count和:number 。 它还有一个在models/thing.rb定义的实例方法: def ratio (self.count + self.number).to_f / Thing.all.count.to_f end 那么,“类别”具有此实例方法,在models/category.rb定义: def thing_ratios self.things.sum(&:ratio.to_f) end 最后,我的wrapper.html.erb视图显示了按照thing_ratios顺序列出的thing_ratios : … 我的问题是这样的:每次有人重新加载页面wrapper.html.erb ,是否必须重新计算每一个相关计算,一直到每个与页面上每个类别相关的Thing的self.count ?

Rails:包含多态关联

我读了这篇有趣的文章,关于使用多态来在Rails中创建更好的活动源 。 我们最终得到了类似的东西 class Activity < ActiveRecord::Base belongs_to :subject, polymorphic: true end 现在,如果其中两个主题是例如: class Event < ActiveRecord::Base has_many :guests after_create :create_activities has_one :activity, as: :subject, dependent: :destroy end class Image < ActiveRecord::Base has_many :tags after_create :create_activities has_one :activity, as: :subject, dependent: :destroy end 将create_activities定义为 def create_activities Activity.create(subject: self) end 客人和标签定义为: class Guest < ActiveRecord::Base belongs_to […]

渴望与Active Model Serializers加载关联

背景 我有一个带有深层嵌套关联的rails应用程序。 .-< WorkPeriod Timecard -< Week -< Day -<–< Subtotal `-< Adjustment -< (has many) 我正在使用Active Model Serializer来构建API。 在客户端,我想一次性加载时间卡及其所有关联。 目前我的序列化器看起来像这样, class TimecardSerializer < ActiveModel::Serializer embed :ids, include: true has_many :weeks end class WeekSerializer < ActiveModel::Serializer embed :ids, include: true has_many :days end # … etc … 问题 这一切都找到了,除了没有任何东西急切加载。 因此,它最终会针对每个请求对数据库进行大量调用。 对于每周,它会单独请求该周的日期。 并且对于每一天,它单独请求它的work_periods,小计和调整。

慢资产ruby1.9.3,macos,rails 3.2

我有一个非常奇怪的问题,我的资产在开发过程中非常缓慢(每个文件10秒),而这只发生在Chrome(17.0.963.79)中。 在Firefox中一切正常。 我的设置: RVM Ruby-1.9.3@p125 Rails 3.2.0 Mac OS 10.7.3我尝试使用rails-dev-tweaks gem从webrick切换到mongrel和thin ,将缓存类设置为true和false。 所有这些都没有帮助,我坚持为什么它的工作只在chrome而不是在Firefox中工作缓慢? 这也是操作系统的新设置,也许我错过了什么,谢谢! UPD。 如果这个初始请求(例如来自新标签)都顺利进行。 如果我正在刷新页面请求接近2分钟。 我只是无法绕过这个问题:(