gpt4 book ai didi

ruby-on-rails - OS X 上的 RSpec 加载时间令人难以置信的长

转载 作者:太空宇宙 更新时间:2023-11-03 17:03:24 25 4
gpt4 key购买 nike

我们的项目使用 Mongodb 和 RSpec。在我的 OS X 机器上,单个 Controller 的 RSpec 运行在:

在 0.24996 秒内完成(文件加载时间为 25.39 秒)

另一方面,我的 friend 有 Ubuntu,对他来说,同样的规范运行于:

在 0.27996 秒内完成(文件加载时间为 4.05 秒)

我机器上的加载时间是原来的 6 倍多。可能是什么原因?

附言不使用 OS X 不是解决方案:/

更新:

关于我们设置的更多信息:

我们都使用 ruby​​ 2.2。我们使用 cmd: bundle exec rspec

通过 guardfile 运行规范

我的 friend 使用 rbenv 和 which rspec 返回

"/home/dan/.rbenv/shims/rspec`

我使用 rvm 和 which rspec 返回:

$ which rspec
rspec: aliased to bundled_rspec
$ which bundled_rspec
bundled_rspec () {
_run-with-bundler rspec $@

更新 2:

我刚刚克隆了 https://github.com/eliotsykes/rspec-rails-examples并运行 rspec。加载文件用了 36 多秒。所以它与 mongodb 无关。我刚刚注意到 Rails 服务器的加载时间也很长。

> time rspec -v
3.3.2

real 0m2.539s
user 0m1.067s
sys 0m0.185s

最佳答案

bundler

对我来说似乎是一些打包程序加载问题。我建议进行更多测量。您是在每个项目中使用 1 个 gemset 还是将所有内容都存储在 1 个 gemset 中(如果您不使用任何东西都是如此)?如果您在 1 个目录中有很多 gem(即所有 1 个 gemset),它最终会大大减慢 bundler 的速度,因为它需要遍历更多路径才能完成工作。

bundle | wc -l # how many gems bundler uses in your current project
gem list -q | wc -l # how many gems in your gemset

如果 gem list -q | wc -l 报告相当大的值(我有 237 并且对我来说一切似乎都很正常),也许您需要将已安装的 gem 拆分为每个项目的单独 gemset。

time命令做更多的测量,寻找real值,它是总和。

首先,删除您的bundled_rspec 包装器,latest RVM 不需要它版本。

然后在使用和不使用 Bundler 的情况下测量您的 rspec 加载:

time rspec -v # with implicit bundler loading, rubygems-bundler gem is in use
time NOEXEC_DISABLE=1 rspec -v # without bundler, disable rubygems-bundler gem for this call`

如果即使对于 Gemfile 相对较小的项目,time rspec -v 也会给您很大的数字,这是一个打包程序问题。

rails

下一个瓶颈通常是 Rails 本身。尝试测量一个不加载 Rails 的测试(即仅 spec_helper),然后使用 rails 进行测试(即使用 rails_helper)。

一旦您开始看到数字上的巨大差异,您就会知道哪里出了问题。

Spring

作为提高 Rails 性能的快速解决方案,使用 spring gem .如果您使用 Rails 4.1+,则 Spring 已启用。

rspec 启用 Spring 添加到你的 Gemfile

gem 'spring-commands-rspec', group: :development

然后运行

$ bundle install
$ spring binstub --all

最后一个命令将为项目的 bin 文件夹中所有支持 spring 的二进制文件生成包装器(看看那里,不要忘记提交它们)。之后,您应该使用 bin/rspec 运行 rspec。第一次运行仍然很慢,但所有后续运行都应该足够快,因为 Rails 已经加载。

关于ruby-on-rails - OS X 上的 RSpec 加载时间令人难以置信的长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33299812/

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