Performance optimization: Only write new ZipFile, if it has been changed. The test suite runs in half the time now.
This commit is contained in:
parent
63520661b1
commit
0c1350ec86
7
zip.rb
7
zip.rb
|
|
@ -759,6 +759,8 @@ module Zip
|
||||||
else
|
else
|
||||||
raise ZipError, "File #{fileName} not found"
|
raise ZipError, "File #{fileName} not found"
|
||||||
end
|
end
|
||||||
|
@create = create
|
||||||
|
@storedEntries = @entries.map{ |e| e.dup }
|
||||||
end
|
end
|
||||||
|
|
||||||
def ZipFile.open(fileName, create = nil)
|
def ZipFile.open(fileName, create = nil)
|
||||||
|
|
@ -829,6 +831,7 @@ module Zip
|
||||||
end
|
end
|
||||||
|
|
||||||
def commit
|
def commit
|
||||||
|
return if ! commitRequired?
|
||||||
onSuccessReplace(name) {
|
onSuccessReplace(name) {
|
||||||
|tmpFile|
|
|tmpFile|
|
||||||
ZipOutputStream.open(tmpFile) {
|
ZipOutputStream.open(tmpFile) {
|
||||||
|
|
@ -845,6 +848,10 @@ module Zip
|
||||||
def close
|
def close
|
||||||
commit
|
commit
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def commitRequired?
|
||||||
|
return entries != @storedEntries || @create == ZipFile::CREATE
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue