- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们的项目使用 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
我的 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 $@
我刚刚克隆了 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
最佳答案
对我来说似乎是一些打包程序加载问题。我建议进行更多测量。您是在每个项目中使用 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 的测试(即仅 spec_helper
),然后使用 rails 进行测试(即使用 rails_helper
)。
一旦您开始看到数字上的巨大差异,您就会知道哪里出了问题。
作为提高 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/
很抱歉新手的问题,但是: 我最近才发现“=”运算符不只是处理对象/等等。值(value),也是引用。这很酷,但我认为这对变量来说是不一样的,它不会在存储整数或 float 的变量之间创建引用。后来我觉
我是一名优秀的程序员,十分优秀!