Merge pull request #4090 from mitchellh/improve-checksum-verification-performance

core: Improved box checksum verification performance
This commit is contained in:
Mitchell Hashimoto 2014-08-06 10:29:15 -07:00
commit d5c548a5c0
1 changed files with 3 additions and 2 deletions

View File

@ -8,7 +8,7 @@ class DigestClass
end end
class FileChecksum class FileChecksum
BUFFER_SIZE = 16328 BUFFER_SIZE = 1024 * 8
# Initializes an object to calculate the checksum of a file. The given # Initializes an object to calculate the checksum of a file. The given
# ``digest_klass`` should implement the ``DigestClass`` interface. Note # ``digest_klass`` should implement the ``DigestClass`` interface. Note
@ -25,11 +25,12 @@ class FileChecksum
# @return [String] # @return [String]
def checksum def checksum
digest = @digest_klass.new digest = @digest_klass.new
buf = ''
File.open(@path, "rb") do |f| File.open(@path, "rb") do |f|
while !f.eof while !f.eof
begin begin
buf = f.readpartial(BUFFER_SIZE) f.readpartial(BUFFER_SIZE, buf)
digest.update(buf) digest.update(buf)
rescue EOFError rescue EOFError
# Although we check for EOF earlier, this seems to happen # Although we check for EOF earlier, this seems to happen