关于SO的第一个问题,但我已经潜伏了很长时间,所以如果我违反任何规则或发布垃圾问题,你将不得不原谅我.
我正在努力更好地理解线程,我决定测试MRI,看看它的表现如何.
给定以下代码(和输出),为什么线程操作比非线程变体慢得多?
class Benchmarker
def self.go
puts '----------Benchmark Start----------'
start_t = Time.now
yield
end_t = Time.now
puts "Operation Took: #{end_t - start_t} seconds"
puts '----------Benchmark End------------'
end
end
# using mutex
puts 'Benchmark 1 (threaded, mutex):'
Benchmarker.go do
array = []
mutex = Mutex.new
5000.times.map do
Thread.new do
mutex.synchronize do
1000.times do
array << nil
end
end
end
end.each(&:join)
puts array.size
end
# using threads
puts 'Benchmark 2 (threaded, no mutex):'
Benchmarker.go do
array = []
5000.times.map do …Run Code Online (Sandbox Code Playgroud) 我正在尝试研究如何使用stdlib中的OpenSSL从Web地址/ uri下载证书,然后在警报应用程序中使用它.
目前,我实际上是使用s_client调用openssl可执行文件并解析响应来获取证书但是当我有一个完整的lib来处理这个时,它感觉很傻/笨拙(而且我知道肯定已经这样了).
我花了一些时间试图用Ruby包围我的openssl源代码,但我觉得它被它击败了; 互联网似乎充斥着许多rubyists试图绕过他们的SSL(wince)而不是OpenSSL本身的有用信息,所以我也没有太多运气.
有人能指出我正确的方向吗?也许通过文档或类似的东西能够处理这个特定的任务?如果你有一个更好的例子,但我更愿意尝试自己解决问题.
提前致谢.