从大流

时间:2016-02-26 11:12:12

标签: ruby sha

我必须从各种流计算哈希值(StringIO,File,chunked http response ...),并且源代码非常大(大约100MB - 1GB)。例如,我有以下代码

require 'digest'

sha = Digest::SHA256.new
stream = StringIO.new("test\nfoo\nbar\nhello world")
# this could also be a File.open('my_file.txt')
# or a chunked http response

while content = stream.read(2)
  sha.update content
end

puts sha.to_s

到目前为止,这是有效的,但我想知道 sha.update方法如何工作。它是否在其实例中存储整个String的副本,以便整个内容保存在内存中?

当将1GB数据加载到RAM中(并在同一台机器上的多个进程上执行此操作)时,这可能会导致一些严重的内存问题。

0 个答案:

没有答案