【发布时间】:2020-07-22 12:19:09
【问题描述】:
我有 2 个测试。一个使用数据库调用,一个使用双精度。我想了解它们之间的性能差异。我意识到这可能很小,但我只是想在选择使用存根或实际调用数据库时更好地了解权衡的延迟方面。
我最初认为这就像运行类似的东西一样简单
time rspec spec_with_db_spec.rb
和
time rspec spec_with_double_spec.rb
独立地并且可能以随机顺序一遍又一遍地重复,所以我可以取平均值,但是,我遇到了一些问题。
- 似乎
time可能不是最好的方法,因为它可能恰好与我的计算机上同时发生的特别昂贵的进程相吻合。我想一遍又一遍地运行它可以帮助解决这个问题,但我不确定。 - 我意识到我也许可以使用 RSpec 的时间输出,但根据(尽管是旧的)帖子,这似乎不可靠。
有人对此有想法吗?它不需要是完美的,而只是我可以运行并看到差异以及差异大约有多少(数量级很好)。
【问题讨论】:
-
也许你可以在规范中使用 Rubys Benchmark module。但是,如果差异可以忽略不计,那么测试的敏锐度确实应该是一个更大的问题。模拟倾向于掩盖您的测试应该防止的错误和不一致。
-
完全同意这不应该是选择 db call 或 double 时的主要驱动因素,但我仍然很好奇。
-
这是我个人学习用的,顺便说一下。
-
过去我在运行 RSpec 时遇到了一个缓慢的测试套件,只是使用了
--profile选项。它向您展示了最慢的规格是什么。它不会真正做与基准测试相同的事情,但它确实可以帮助您找到问题区域。 -
完全。对于现有代码库来说,这将是一个很好的方法。
标签: ruby-on-rails performance time rspec