我是 Rails 性能测试的新手。有人可以解释一下挂墙时间和处理时间之间的区别吗?更重要的是,来自 test:benchmark 和 test:profile 的时间结果之间有什么区别。显然存在重大差异,我还没有从文档中收集到这一点。一些事实:
当我运行 rake test:benchmark 时,我得到:
EditorTest#test_augment_large_doc (618 ms warmup)
wall_time: 554 ms
memory: 0.00 KB
objects: 0
gc_runs: 0
gc_time: 0.00 ms
当我运行 rake test:profile 时,我得到:
EditorTest#test_augment_large_doc (617 ms warmup)
process_time: 1.74 sec
memory: unsupported
objects: unsupported
我已阅读:
- http://guides.rubyonrails.org/performance_testing.html#generating-performance-tests
- http://ruby-prof.rubyforge.org/
...但我仍然不明白这些类型的性能测试之间的根本区别以及为什么时间相差如此之大。
还有一些事情:当我跟踪我的开发日志时,我得到的时间通常比 test:benchmark 的实际时间要长一点(0.1 秒)。而且,当我在 firebug 或 chrome 中查看 XHR 请求时间时,我得到的时间通常要高 0.3 秒。
提前致谢!
[编辑]
嗯...没有回应。任何意见?这是 Rails 开发人员经常使用的工具吗?这种差异与优化过程无关吗?
最佳答案
据我了解,wall time 顾名思义,就是测试期间经过的秒数。处理时间略有不同,用于衡量执行程序所花费的 CPU 时间。
http://en.wikipedia.org/wiki/CPU_time
一般来说,基准测试和分析之间的差异与相同的区别有关。基准测试是一个简单的过程,多次运行一堆代码并查看需要多长时间。
分析更加详细,可以显示代码的不同部分花费了多长时间,包括对堆栈中所有方法的调用次数。运行完整配置文件所需的时间并不代表性能,而是向您显示应用中不同代码部分的相对性能。
关于ruby-on-rails - 性能测试 - 测试 :profile vs test:benchmark, 墙上时间与处理时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4665591/