红宝石。线程基准

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了红宝石。线程基准相关的知识,希望对你有一定的参考价值。

Connect to three sites using threads and without using them. Fetch the response. Measure the benchmark.
  1. # encoding: utf-8
  2.  
  3. require 'net/http'
  4. require 'benchmark'
  5.  
  6. class StatusFetcher
  7. attr_reader :result
  8.  
  9. def initialize
  10. @result = []
  11. end
  12.  
  13. def self.start!
  14. new
  15. end
  16. end
  17.  
  18. class ThreadStatusFetcher < StatusFetcher
  19. def initialize
  20. super
  21. threads = []
  22. %w{ stackoverflow.com
  23. superuser.com
  24. systemfault.com
  25. }.each do |page|
  26. threads << Thread.new(page) do |url|
  27. http = Net::HTTP.new(url, 80)
  28. @result << "#{url}: #{http.get('/').message}"
  29. end
  30. end
  31. threads.each(&:join)
  32. end
  33. end
  34.  
  35. class SimpleStatusFetcher < StatusFetcher
  36. def initialize
  37. super
  38. %w{ stackoverflow.com
  39. superuser.com
  40. systemfault.com
  41. }.each do |url|
  42. http = Net::HTTP.new(url, 80)
  43. @result << "#{url}: #{http.get('/').message}"
  44. end
  45. end
  46. end
  47.  
  48. Benchmark.bm(8) do |r|
  49. r.report('simple') { SimpleStatusFetcher.start!.result }
  50. r.report('thread') { ThreadStatusFetcher.start!.result }
  51. end

以上是关于红宝石。线程基准的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 omniauth / oauth 对每秒登录次数进行基准测试? (红宝石+rspec)

带有红宝石集合/可枚举的酷技巧和富有表现力的片段[关闭]

基准宝石改进

多线程基准测试问题

用 Java 衡量单线程复杂算法的最佳宏基准测试工具/框架是啥? [关闭]

newCacheThreadPool()newFixedThreadPool()newScheduledThreadPool()newSingleThreadExecutor()自定义线程池(代码片段