Improved box checksum verification performance

When adding large boxes verifying the checksum took noticably longer than expected because the Ruby GC was needlessly working overtime.
This commit is contained in:
Shawn Neal 2014-06-23 19:17:37 -07:00
parent 1e28f1ac31
commit 9c20014a85
1 changed files with 3 additions and 2 deletions

View File

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