2012-11-09 160 views
2

在多线程环境中,Ruby/Rails可以测量单个线程的实际执行时间吗?在多线程环境中测量线程的执行时间

我一次创建多达10个线程,目前我正在计算每个线程的运行时间,但由于多个线程正在共享处理器,因此在共享资源时会有差距。所以我的时间将超过实际。

@urls.each do |url| 
    Thread.new do 
    time = Time.now 
    request = http.get(url) 
    response_time = Time.now - time 
    end 
    ... 
end 
+0

您的结果可能取决于您使用的Ruby实现。例如,如果你坚持使用MRI,你将只有绿线,这意味着它们基本上是模拟线程,并不涉及真正的系统线程。这也意味着你不能使用多个处理器。那么你在使用哪个Ruby? – jhchabran

+0

哦,你应该使用Benchmark来衡量你的表现,而不是使用Time.now进行基础算术:) http://www.ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.html – jhchabran

回答

2

wycats取得了一个名为ruby-prof凉爽的宝石,应该帮助你。它支持同时分析多个线程,包括进程时间,CPU时间和挂墙时间。

+0

这就是一个伟大的领先。我现在检查一下。 –

+0

就在 - 祝你好运! –

+0

因为我在生产中实际使用它来测量生产中的流程时间,所以有什么想法,而不仅仅是为了衡量流程的改进?我看到提及ruby-prof加倍实际处理时间。 –